org.apache.commons.net.ftp.FTPClient上传文件大小改变的解决方法
2012-05-07 16:15
871 查看
现象:今天在用org.apache.commons.net.ftp.FTPClient的storeFile方法时,发现上传小文件如几KB的情况下,文件是无损传输,但是当上传的文件是55M以及100多兆的时候,FTP上的服务器文件的大小就会增加。
解决方法:在连接FTP服务器的时候,加上一段这个代码ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
示例:
连接FTP服务器代码:
上传文件方法的代码:
断开服务器连接方法的代码:
解决方法:在连接FTP服务器的时候,加上一段这个代码ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
示例:
连接FTP服务器代码:
public static FTPClient getFtpClient(String serverIP,String userName,String password,int port) throws SocketException, IOException{ int reply; FTPClient ftpClient = new FTPClient(); ftpClient.connect(serverIP, port); reply = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(reply)){ ftpClient.disconnect(); System.out.println("登陆FTP失败"); return null; } ftpClient.login(userName, password); ftpClient.setDataTimeout(2000); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); return ftpClient; }
上传文件方法的代码:
/** * 上传文件到文件服务器中 * @param file 需上传的文件 * @param ftpClient * @param workDirectory FTP服务器的相对目录 * @return * @throws IOException */ public static String uploadFileToBBK(File file,FTPClient ftpClient,String workDirectory) throws IOException{ ftpClient.setControlEncoding("UTF-8"); ftpClient.makeDirectory(workDirectory); ftpClient.changeWorkingDirectory(workDirectory); BufferedInputStream fiStream =new BufferedInputStream(new FileInputStream(file)); boolean flag = ftpClient.storeFile(new String((file.getName()).getBytes("UTF-8"),"iso-8859-1"),fiStream); fiStream.close(); if(flag){ return "OK"; }else{ return ""; } }
断开服务器连接方法的代码:
public static void closeFtp(FTPClient ftpClient){ if(ftpClient!=null && ftpClient.isConnected()){ try { boolean isLogOut = ftpClient.logout(); if(isLogOut){ System.out.println("成功关闭ftp连接"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("关闭FTP服务器异常"); }finally{ try { ftpClient.disconnect(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("关闭服务器连接异常"); } } } }
相关文章推荐
- org.apache.commons.net.ftp.FTPClient----根据文件名,路径检索文件 FTP上传 下载 删除文件
- FTP文件的上传和下载---org.apache.commons.net.ftp.FTPClient
- org.apache.commons.net.ftp.FTPClient文件上传下载,中文乱码
- FTP文件的上传和下载---org.apache.commons.net.ftp.FTPClient
- org.apache.commons.net.ftp.FTPClient上传、下载、修改文件等功能
- ftp org.apache.commons.net.ftp.FTPClient 判断文件是否存在
- 【FTP】org.apache.commons.net.ftp.FTPClient实现复杂的上传下载,操作目录,处理编码
- org.apache.commons.net.ftp.FTPClient上传下载压缩图片
- org.apache.commons.net.ftp下的FTPClient类缓冲区大小设置无效
- org.apache.commons.net.ftp.FTPClient 下载文件提示Software caused connection abort: recv failed
- 【FTP】使用org.apache.commons.net.ftp.FTPClient 实现FTP的上传下载
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题
- org.apache.commons.net.ftp.FTPClient 例子
- Debug记录 - taotao项目 - FTPClient对象 storeFile方法 很慢 上传文件大小为 0
- APACHE FTP 文件上传丢失数据的解决方法
- org.apache.commons.net.ftp.FTPClient
- org.apache.commons.fileupload上传临时文件删除方法2则
- nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题
- apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出
- apache-commons-net Ftp 进行文件、文件夹的上传下载及日志的输出