前段时间项目中用到的FTP文件上传,自己谢了一个基于FTPClient的FTP文件上传函数
用的到jar包的下载地址:commons-net-1.4.1.jar
FTP文件上传过程中需要注意,FTP支持二级制和ASCII码的文件上传,需要根据需要指定上传类型(一般二进制的没什么问题),不然会出现上传文件大小不一致或者损坏的问题。
具体的实现:
/**
* FTPClient 上传文件到 ftp
* ip ftp服务器ip
* port 端口号
* username 用户名
* password 登录密码
* path 存储路径
* filename 存储文件名称
* input 上传文件的输入流
*/
boolean uploadFile(String ip, int port, String username, String password,
String path, String filename, InputStream input)
{
System.out.println("[发送文件到FTP]");
boolean success = false;
FTPClient ftp = new FTPClient();
try
{
int reply;
ftp.connect(ip, port);// 连接FTP服务器
ftp.login(username, password);// 登录
reply = ftp.getReplyCode();
ftp.setFileType(FTPClient.BINARY_FILE_TYPE); // 文件上传方式
ftp.enterLocalPassiveMode();//ftp server 开通一个端口进行数据传输
if (!FTPReply.isPositiveCompletion(reply))
{
ftp.disconnect();
return success;
}
ftp.makeDirectory(path);
ftp.changeWorkingDirectory(path);
ftp.setRemoteVerificationEnabled(false);
System.out.println("开始发送文件" + filename + "到FTP");
success = ftp.storeFile(filename, input);
} catch (IOException e)
{
System.out.println("[文件发送失败]");
e.printStackTrace();
} finally
{
if (ftp.isConnected())
{
try
{
input.close();
ftp.logout();
ftp.disconnect();
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
return success;
}
希望对大家有帮助。