ftp文件上传及下载工具类[通俗易懂]

ftp文件上传及下载工具类[通俗易懂]1、ftp文件上传用例解析(需使用apacher的commons-net-3.3.jar)publicclassTestFtp{@Testpublicvoidtest()throwsException{//1、创建FTP客户端FTPClientftpClient=newFTPClient();//2、

大家好,又见面了,我是你们的朋友全栈君。

1、ftp文件上传用例解析(需使用apacher的commons-net-3.3.jar)

public class TestFtp {

    @Test
    public void test() throws Exception {
        // 1、创建FTP客户端
        FTPClient ftpClient = new FTPClient();
        // 2、连接ftp地址
        ftpClient.connect("192.168.128.128", 21);
        // 3、登录
        ftpClient.login("ftpuser", "123456");
        // 4、设置文件存放目录
        ftpClient.changeWorkingDirectory("/home/ftpuser/www/images");
        // 5、设置上传文件类型(默认是文本)
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        // 6、指定文件名及文件输入流,上传文件
        FileInputStream is = new FileInputStream(new File("f:\\eee"));
        ftpClient.storeFile("hello.jpg", is);
        // 7、登出
        ftpClient.logout();
    }
}

2、ftp文件上传及下载工具类代码实现:

/** * @author CSDN_LQR * @TODO ftp上传下载工具类 */
public class FtpUtil { 
   

    /** * Description: 向FTP服务器上传文件 * * @param host * FTP服务器hostname * @param port * FTP服务器端口 * @param username * FTP登录账号 * @param password * FTP登录密码 * @param basePath * FTP服务器基础目录 * @param filePath * FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath * @param filename * 上传到FTP服务器上的文件名 * @param input * 输入流 * @return 成功返回true,否则返回false */
    public static boolean uploadFile(String host, int port, String username, String password, String basePath,
            String filePath, String filename, InputStream input) {
        boolean result = false;
        FTPClient ftp = new FTPClient();
        try {
            int reply;
            ftp.connect(host, port);// 连接FTP服务器
            // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
            ftp.login(username, password);// 登录
            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                return result;
            }
            // 切换到上传目录
            if (!ftp.changeWorkingDirectory(basePath + filePath)) {
                // 如果目录不存在创建目录
                String[] dirs = filePath.split("/");
                String tempPath = basePath;
                for (String dir : dirs) {
                    if (null == dir || "".equals(dir))
                        continue;
                    tempPath += "/" + dir;
                    if (!ftp.changeWorkingDirectory(tempPath)) {
                        if (!ftp.makeDirectory(tempPath)) {
                            return result;
                        } else {
                            ftp.changeWorkingDirectory(tempPath);
                        }
                    }
                }
            }
            // 设置上传文件的类型为二进制类型
            ftp.setFileType(FTP.BINARY_FILE_TYPE);
            // 上传文件
            if (!ftp.storeFile(filename, input)) {
                return result;
            }
            input.close();
            ftp.logout();
            result = true;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                }
            }
        }
        return result;
    }

    /** * Description: 从FTP服务器下载文件 * * @param host * FTP服务器hostname * @param port * FTP服务器端口 * @param username * FTP登录账号 * @param password * FTP登录密码 * @param remotePath * FTP服务器上的相对路径 * @param fileName * 要下载的文件名 * @param localPath * 下载后保存到本地的路径 * @return */
    public static boolean downloadFile(String host, int port, String username, String password, String remotePath,
            String fileName, String localPath) {
        boolean result = false;
        FTPClient ftp = new FTPClient();
        try {
            int reply;
            ftp.connect(host, port);
            // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
            ftp.login(username, password);// 登录
            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                return result;
            }
            ftp.changeWorkingDirectory(remotePath);// 转移到FTP服务器目录
            FTPFile[] fs = ftp.listFiles();
            for (FTPFile ff : fs) {
                if (ff.getName().equals(fileName)) {
                    File localFile = new File(localPath + "/" + ff.getName());

                    OutputStream is = new FileOutputStream(localFile);
                    ftp.retrieveFile(ff.getName(), is);
                    is.close();
                }
            }

            ftp.logout();
            result = true;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                }
            }
        }
        return result;
    }

    public static void main(String[] args) {
        try {
            FileInputStream in = new FileInputStream(new File("D:\\temp\\image\\gaigeming.jpg"));
            boolean flag = uploadFile("192.168.25.133", 21, "ftpuser", "ftpuser", "/home/ftpuser/www/images",
                    "/2015/01/21", "gaigeming.jpg", in);
            System.out.println(flag);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

懒人地址:http://download.csdn.net/detail/csdn_lqr/9692906

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134697.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的单例模式是什么_Java单例模式是什么

    java的单例模式是什么_Java单例模式是什么Java单例模式是什么时间:2017-07-14来源:华清远见JAVA学院Java单例模式简介在GoF的23种设计模式中,单例模式是比较简单的一种。然而,有时候越是简单的东西越容易出现问题。下面就单例设计模式详细的探讨一下。所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是JavaWeb中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全…

    2022年7月25日
  • EXCEL解密打开密码

    EXCEL解密打开密码excel文件设置了打开密码,但是设置的密码忘记了,导致现在没有办法打开文件了,这种情况需要解密excel文件。解密的方法就是找回密码,而且MSOfficeExcel文件中没有提供找回密码功能,所以我们需要自己找回密码,可以用奥凯丰EXCEL解密大师。【EXCEL解密大师】快速找回密码_轻松移除使用限制-奥凯丰okfone…

    2022年6月28日
  • spring事务的传播行为和隔离级别_spring常用的事务传播行为

    spring事务的传播行为和隔离级别_spring常用的事务传播行为  本文主要介绍下Spring事务中的传播行为。事务传播行为介绍Spring中的7个事务传播行为:事务行为说明PROPAGATION_REQUIRED支持当前事务,假设当前没有事务。就新建一个事务PROPAGATION_SUPPORTS支持当前事务,假设当前没有事务,就以非事务方式运行PROPAGATION_MANDATORY支持当前事务,假设当前没有事…

    2022年10月29日
  • pycharm汉化包下载[通俗易懂]

    pycharm汉化包下载[通俗易懂]把解压后的文件放到pycharm安装目录lib文件夹下即可链接:https://pan.baidu.com/s/126-yg7ojwwryywBzUuVEhQ提取码:v5j0

    2022年5月9日
  • php格式怎么转换为pdf,PHP如何将将word文件转为pdf

    php格式怎么转换为pdf,PHP如何将将word文件转为pdfPHP将word文件转为pdf的方法:首先修改【php.ini】,并重启环境;然后安装微软office套件;最后配置office组件服务即可。PHP将word文件转为pdf的方法:1、修改php.ini添加:extension=php_com_dotnet.dll去除注释:com.allow_dcom=true重启环境相关学习推荐:php编程(视频)2、配置office支持(1)安装微软off…

    2022年5月11日
  • 数据结构与算法排序算法_数据结构快速排序图解

    数据结构与算法排序算法_数据结构快速排序图解什么是排序?排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。1.排序的分类排序分为两类:内部排序:若整个排序过程不需要访问外存便能完成,则称此类排序

    2022年8月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号