FTP服务器文件上传下载

/**  
 * 上传文件到FTP服务器
 * @param host FTP服务器地址
 * @param port FTP服务器端口  
 * @param username FTP登录账号  
 * @param password FTP登录密码  
 * @param basePath FTP服务器基础目录 
 * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01
 * @param filename 上传到FTP服务器上的文件名
 * @param inputStream 输入流  
 * @return 成功返回true,否则返回false  
 */    
public static boolean uploadFile(String host, int port, String username, String password, String basePath, String filePath, String filename, InputStream inputStream) {  
        boolean result = false;  
        FTPClient ftpClient = new FTPClient();  
        try {  
            ftpClient.connect(host, port);
            ftpClient.login(username, password);
            ftpClient.setControlEncoding("utf-8");
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置上传文件的类型二进制类型  
            if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
                ftpClient.disconnect();  
                return result;  
            }

            //切换到上传目录  
            if (!ftpClient.changeWorkingDirectory(basePath+filePath)) {  
                String[] dirs = filePath.split("/");  
                String tempPath = basePath;  
                for (String dir : dirs) {  
                    if (null == dir || "".equals(dir)) continue;  
                    tempPath += "/" + dir;  
                    if (!ftpClient.changeWorkingDirectory(tempPath)) {  
                        if (!ftpClient.makeDirectory(tempPath)) {  
                            return result;  
                        } else {  
                            ftpClient.changeWorkingDirectory(tempPath);  
                        }  
                    }  
                }  
            }  

            if (!ftpClient.storeFile(filename, inputStream)) {  
                return result;  
            }
            inputStream.close();  
            ftpClient.logout();  
            result = true;  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (ftpClient.isConnected()) {  
                try {  
                    ftpClient.disconnect();  
                } catch (IOException ioe) {  
                }  
            }  
        }  
        return result;  
    } 


/**  
 * 读取文件从FTP服务器
 * @param host FTP服务器地址
 * @param port FTP服务器端口  
 * @param username FTP登录账号  
 * @param password FTP登录密码  
 * @param filePath FTP服务器上的相对路径  
 * @param fileName 要下载的文件名  
 * @param localPath 下载后保存到本地的路径  
 * @return  
 */    
public static InputStream readFile(String host, int port, String username, String password, String filePath, String fileName) {
    FTPClient ftpClient = new FTPClient();
    InputStream inputStream = null;
    try {
        ftpClient.connect(host, port);
        ftpClient.login(username, password);
        ftpClient.setControlEncoding("utf-8");
        ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);// 设置上传文件的类型为二进制类型
        if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {// 验证连接成功
            ftpClient.disconnect();
        }
        ftpClient.changeWorkingDirectory(filePath);// 转移到FTP服务器目录
        inputStream = ftpClient.retrieveFileStream(new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
        ftpClient.logout();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (ftpClient.isConnected()) {
            try {
                ftpClient.disconnect();
            } catch (IOException ioe) {
            }
        }
    }
    return inputStream;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值