Was soll ich tun, wenn der Java-FTP-Upload fehlschlägt?
Ich habe kürzlich an einem Projekt gearbeitet, bei dem Dateien in ein bestimmtes FTP-Verzeichnis hochgeladen werden mussten. Dann habe ich festgestellt, dass das Projekt erfolgreich auf Tomcat bereitgestellt werden kann, bei der Bereitstellung auf Weblogic jedoch fehlschlägt im Internet und habe es noch nicht gelöst.
boolean isSuccee = ftp.storeFile(fileName, in);
Dies gibt immer wieder false zurück und der Upload schlägt fehl
Dann habe ich mir die Online-Lösung angesehen und ftp.enterLocalPassiveMode(); hinzugefügt, was das Problem immer noch nicht gelöst hat
Gehen Sie direkt zum Code:
Verbinden Sie sich zuerst mit dem FTP-Dienst
private static FTPClient ftp; /* * 获得ftp链接 */ public static boolean connectFtp(Ftp ftpInfo) throws Exception { ftp = new FTPClient(); boolean flag = false; int reply; if(ftpInfo.getPort() != null && !"".equals(ftpInfo.getPort())){ ftp.connect(ftpInfo.getIpAddr(),ftpInfo.getPort()); }else{ ftp.connect(ftpInfo.getIpAddr()); } ftp.login(ftpInfo.getUserName(), ftpInfo.getPwd()); ftp.setFileType(FTPClient.BINARY_FILE_TYPE); reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); return flag; } ftp.changeWorkingDirectory(ftpInfo.getPath()); flag = true; return flag; }
und laden Sie dann die Datei hoch:
/** * 文件上传 * @param file * @throws IOException */ public static void uploadFile(File file) throws IOException { FileInputStream in = null; try { in = new FileInputStream(file); String fileName = file.getName(); /** * ftp.enterLocalPassiveMode(); * 这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。 * 为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据, * 但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。 */ ftp.enterLocalPassiveMode(); ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); boolean isSuccee = ftp.storeFile(fileName, in); int i = 1; String newFileName = null; while (!isSuccee) { //多次上传数据直到成功(最多12次) newFileName = i + fileName; isSuccee = ftp.storeFile(newFileName, in); i++; if(i>11){ break; } } String ftpPath = ServiceConstans.ONEPORT_FTP_PATH;//驳船配载图上传到FTP的路径 if (isSuccee ) { //成功 logger.info("FTP:文件上传成功!"); if( newFileName == null){ ftp.rename(fileName, ftpPath+fileName); // 第一次上传就成功 }else{ ftp.rename(newFileName, ftpPath+fileName); } } else { logger.info("FTP:文件上传失败!!"); throw new BusiException("FTP:文件上传失败!!"); } } catch (FileNotFoundException e) { logger.error("未找到相关文件!", e); } catch (IOException e) { logger.error("上传文件失败!", e); } finally { in.close(); //file.delete();//删除源文件 } }
Lösung:
Da es kein Problem mit dem Code gibt, überprüfen Sie ihn vom Server aus. ;
Da die Version des JAR-Pakets in der Weblogik niedriger ist als die des JAR-Pakets im Projekt, wenn keine erzwungene Einstellung für die Suche vorhanden ist Für das JAR-Paket dieses Projekts wird zuerst das JAR-Paket in Weblogic geladen, daher schlägt der Upload fehl, weil die Version zu niedrig ist
Fügen Sie also das Paket
Verwandte Empfehlungen: „Java lernen“
Das obige ist der detaillierte Inhalt vonWas tun, wenn der Java-FTP-Upload fehlschlägt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!