java ftp上传失败_java ftp上传失败怎么办

5a1a3b747d2c0e28af6001266acaa02e.png

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包所以由于版本过低导致上传失败

02a34621291ed2fb01b33689ddf6b6c4.png

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

198c6f821917da39c26b4fa31564fd99.png

相关推荐:《java学习》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值