核心处理FTP上传的方法
假如FTP不限制上传网速的话,基本能达到10M/s(局域网内)
/**
* 上传文件-FTP方式
* @param ftp FTPClient对象
* @param path FTP服务器上传地址
* @param filename 本地文件路径
* @param inputStream 输入流
* @return boolean
*/
public boolean uploadFile(FTPClient ftp, String path, String fileName, InputStream inputStream) {
boolean success = false;
try {
if (!ftp.changeWorkingDirectory(path)) {// 如果不能进入dir下,说明此目录不存在!
FtpUtils.makeDirectory(path, ftp);
}
ftp.changeWorkingDirectory(path);
FTPFile[] fs = ftp.listFiles();//得到目录的相应文件列表
fileName = FtpUtils.changeName(fileName, fs);
//转到指定上传目录
ftp.changeWorkingDirectory(path);
//将上传文件存储到指定目录
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.setBufferSize(1024*1024);
//如果缺省该句 传输txt正常 但图片和其他格式的文件传输出现乱码
BufferedInputStream bIs = new BufferedInputStream(inputStream);
ftp.storeFile(fileName, bIs);
//关闭输入流
inputStream.close();
//退出ftp
ftp.logout();
//表示上传成功
success = true;
logger.debug("上传成功。。。。。。");
} catch (Exception e) {
logger.error("文件上传失败:" + e.getMessage());
e.printStackTrace();
}
return success;
}
注意:以下代码是核心解决上传速度的
ftp.setBufferSize(1024*1024);
BufferedInputStream bIs = new BufferedInputStream(inputStream);