失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java web ftp上传_java web FTPClient实现上传文件到指定服务器

java web ftp上传_java web FTPClient实现上传文件到指定服务器

时间:2019-01-08 12:04:54

相关推荐

java web ftp上传_java web FTPClient实现上传文件到指定服务器

FPClient 实现上传文件到指定服务器,供大家参考,具体内容如下

调用

FileInputStream in=new FileInputStream(new File(fileUrl));

moveFile("10.3.3.**", 21, "username", "password", path, filename, in);

方法

/**

* Description: 向FTP服务器上传文件

* @param url FTP服务器hostname

* @param port FTP服务器端口

* @param username FTP登录账号

* @param password FTP登录密码

* @param path FTP服务器保存目录

* @param filename 上传到FTP服务器上的文件名

* @param input 输入流

* @return 成功返回true,否则返回false

*/

public static boolean moveFile(String url,int port,String username, String password, String path, String filename, InputStream input) {

boolean success = false;

FTPClient ftp = new FTPClient();

try {

int reply;

ftp.connect(url, port);//连接FTP服务器

//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

ftp.login(username, password);//登录

reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return success;

}

//创建路径

try{

ftp.makeDirectory(path);

}catch(Exception e){

}

ftp.enterLocalPassiveMode();

ftp.changeWorkingDirectory(path);

boolean f= ftp.storeFile(filename, input);

logger.error(f);

input.close();

ftp.logout();

success = true;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (ftp.isConnected()) {

try {

ftp.disconnect();

} catch (IOException ioe) {

}

}

}

return success; }

一些细节

FileInputStream.available()返回的实际可读字节数,也就是总大小。

FTPClient.storeFile()方法时,就停止在那里,什么反应都没有,出现假死状态。

解决方法: 调用FTPClient.enterLocalPassiveMode()

原 理: 因为ftp server可能每次开启不同的端口来传输数据,但是在linux上或者其他服务器上面,由于安全限制,可能某些端口没有开启,所以就出现阻塞

FTP默认端口为21 SSH为22 实际传输端口为20

查看指定端口,例21

netstat -na|grep 21(端口号)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

如果觉得《java web ftp上传_java web FTPClient实现上传文件到指定服务器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。