Que dois-je faire si le téléchargement FTP Java échoue ?
J'ai récemment travaillé sur un projet qui nécessitait de télécharger des fichiers dans un répertoire FTP désigné. J'ai ensuite découvert que le projet pouvait être déployé avec succès sur Tomcat, mais échouait lorsqu'il était déployé sur Weblogic. sur Internet et je ne l'ai pas encore résolu.
boolean isSuccee = ftp.storeFile(fileName, in);
Cela renvoie toujours false et le téléchargement échoue
Ensuite, j'ai regardé la solution en ligne et j'ai ajouté ftp.enterLocalPassiveMode(); au code :
Connectez-vous d'abord au service ftp
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; }
puis téléchargez le fichier :
/** * 文件上传 * @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();//删除源文件 } }
Puisqu'il n'y a pas de problème avec le code, vérifiez-le côté serveur ;
Parce que la version du package jar sur la logique Web est inférieure à celle du package jar dans le projet, s'il n'y a pas de paramètre de recherche forcé pour le package jar de ce projet, le package jar dans weblogic sera chargé en premier, donc le téléchargement échoue car la version est trop basse
Ajoutez donc le package
Recommandations associées : "
apprentissage JavaCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!