核心处理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);