FTP上传工具2

来源:互联网 发布:手机淘宝联盟购买省钱 编辑:程序博客网 时间:2024/05/17 06:36


现象:今天在用org.apache.commons.net.ftp.FTPClient的storeFile方法时,发现上传小文件如几KB的情况下,文件是无损传输,但是当上传的文件是55M以及100多兆的时候,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("关闭服务器连接异常");                }            }                    }    }
复制代码

原创粉丝点击