FTP上传核心方法

2016/07/27 问题一箩筐

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

Search

    欢迎关注我的微信公众号

    Yannis的程序人生

    Table of Contents