java ftp上传失败怎么办

互联网 20-5-30

java ftp上传失败怎么办?

最近做一个项目需要将文件上传至FTP指定目录,然后发现项目部署在tomcat就可以成功,部署在weblogic就失败,在网上找了很多原因一直没有解决。

boolean isSuccee = ftp.storeFile(fileName, in);

这里一直返回false上传失败

然后看网上解决方案是添加ftp.enterLocalPassiveMode();仍然没有解决问题

直接上代码:

先链接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; }

然后是上传文件:

/** * 文件上传 * @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();//删除源文件         }       }

解决方案:

由于代码一直没有问题,从服务器方面检测;

因为web logic上的jar包版本低于项目中的jar包,没有强行设置查找本项目jar包的话会优先加载weblogic中的jar包所以由于版本过低导致上传失败

所以在weblogic.xml文件中添加上<package-name>org.apache.commons.net.*</package-name>这个包,这样会优先加载项目中的jar包,完毕!

相关推荐:《java学习》

以上就是java ftp上传失败怎么办的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: java
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:SpringMVC 工作原理

相关资讯