public boolean uploadFile(FTPClient ftp, String path, String[] fileName,
InputStream[] inputStream) {
boolean success = false;
try {
ftp.makeDirectory(path);
ftp.changeWorkingDirectory(path);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
for (int i = 0; i < inputStream.length; i++) {
ftp.storeFile(fileName[i], inputStream[i]);
inputStream[i].close();
}
ftp.logout();
success = true;
} catch (Exception e) {
e.printStackTrace();
}
return success;
}
8 个解决方案
#1
我在本地的tomcat往linux服务器进行ftp上传是成功的,但是我把项目上线后放到云平台上后,上传就失效了,只能创建一个文件夹,文件并没有上传成功!
#2
是不是权限方面的原因呢? 可以贴下日志
#3
楼主的问题解决了吗?我也遇到同样的问题了。
在window能成功上传。但是在linux下就不行了。然后在FTP服务器上报了425 Can't open data connection
在window能成功上传。但是在linux下就不行了。然后在FTP服务器上报了425 Can't open data connection
#4
windows下的路劲获取和linux下的路劲是有区别的,建议path里的路劲符号“/”做转换试一下。
#5
遇到也一样的问题,求救
#6
我是可以上传成功,但是项目访问不了,一直404,求大神
#7
在项目中使用commons-net-3.0.1.jar实现FTP文件的下载,在windows xp上运行正常,但是放到linux上,却出现问题,程序运行到
FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态。google一把,发现很多人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
另外,如果程序部署在weblogic上, 也有可能出现一些问题,为什么,因为weblogic自己也有commons-net包,如果weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。
FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态。google一把,发现很多人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
另外,如果程序部署在weblogic上, 也有可能出现一些问题,为什么,因为weblogic自己也有commons-net包,如果weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。
#8
我前段时间也出现这个问题,不过我是放在虚拟机里,后来排查了下,结果是虚拟机没装ftp服务,你可以试试
#1
我在本地的tomcat往linux服务器进行ftp上传是成功的,但是我把项目上线后放到云平台上后,上传就失效了,只能创建一个文件夹,文件并没有上传成功!
#2
是不是权限方面的原因呢? 可以贴下日志
#3
楼主的问题解决了吗?我也遇到同样的问题了。
在window能成功上传。但是在linux下就不行了。然后在FTP服务器上报了425 Can't open data connection
在window能成功上传。但是在linux下就不行了。然后在FTP服务器上报了425 Can't open data connection
#4
windows下的路劲获取和linux下的路劲是有区别的,建议path里的路劲符号“/”做转换试一下。
#5
遇到也一样的问题,求救
#6
我是可以上传成功,但是项目访问不了,一直404,求大神
#7
在项目中使用commons-net-3.0.1.jar实现FTP文件的下载,在windows xp上运行正常,但是放到linux上,却出现问题,程序运行到
FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态。google一把,发现很多人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
另外,如果程序部署在weblogic上, 也有可能出现一些问题,为什么,因为weblogic自己也有commons-net包,如果weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。
FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态。google一把,发现很多人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
另外,如果程序部署在weblogic上, 也有可能出现一些问题,为什么,因为weblogic自己也有commons-net包,如果weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。
#8
我前段时间也出现这个问题,不过我是放在虚拟机里,后来排查了下,结果是虚拟机没装ftp服务,你可以试试