龙空技术网

SpringBoot项目集成FTP

小心程序猿QAQ 869

前言:

此刻各位老铁们对“java上传文件ftp”大体比较关心,咱们都想要知道一些“java上传文件ftp”的相关文章。那么小编同时在网络上收集了一些有关“java上传文件ftp””的相关文章,希望我们能喜欢,你们一起来了解一下吧!

写在前面

FTP是一个文件传输协议,被开发人员广泛用于在互联网中文件传输的一套标准协议。

而我们通常在开发过程中也要通过FTP来搭建文件系统,用于存储系统文件等。

目前正值SpringBoot热潮,所以我们接下来会一起学习一下SpringBoot如何集成FTP,以及相关的FTP组件包,还有其主要提供的几个方法。

当然在这系列文章结尾,我们还会给出确切的FTP操作工具类,算是一些小成果,希望和大家共勉。

FTP相关软件安装

我在此就不介绍如何安装FTP了,但是我可以推荐给大家一些软件作为选择。

Linux版本,推荐使用vsftpd进行搭建FTP,只需要改指定的几个配置,添加上用户即可。

Windows版本,推荐使用Serv-U进行搭建FTP,图形化界面,有中文版,操作起来很简单。

开始集成引入相关jar包

这里我们对FTP相关的组件包使用的是edtFTPj,其实之前很多人都选择的是Java自带的包来实现FTP功能的。

在我们的SpringBoot项目中pom.xml下添加以下依赖。

<dependency>    <groupId>com.enterprisedt</groupId>    <artifactId>edtFTPj</artifactId>    <version>1.5.3</version></dependency>复制代码

更新maven进行引入,然后我们进行下一步。

引入FTPUtils.java和FTPHelper.java

引入两个工具类。

我这里先贡献一下代码,请大家酌情作为参考。

/** * Ftp 工具类 */public class FtpHelper {    private FTPClient ftp;    public FtpHelper() {    }    /**     * 初始化Ftp信息     *     * @param ftpServer   ftp服务器地址     * @param ftpPort     Ftp端口号     * @param ftpUsername ftp 用户名     * @param ftpPassword ftp 密码     */    public FtpHelper(String ftpServer, int ftpPort, String ftpUsername,                     String ftpPassword) {        connect(ftpServer, ftpPort, ftpUsername, ftpPassword);    }    /**     * 连接到ftp     *     * @param ftpServer   ftp服务器地址     * @param ftpPort     Ftp端口号     * @param ftpUsername ftp 用户名     * @param ftpPassword ftp 密码     */    public void connect(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) {        ftp = new FTPClient();        try {            ("UTF-8");            ;            ;            ;            ;            ;            (ftpUsername, ftpPassword);            ;        } catch (Exception e) {            e.printStackTrace();            ftp = null;        }    }    /**     * 更改ftp路径     *     * @param ftp     * @param dirName     * @return     */    public boolean checkDirectory(FTPClient ftp, String dirName) {        boolean flag;        try {            ;            flag = true;        } catch (Exception e) {            e.printStackTrace();            flag = false;        }        return flag;    }    /**     * 断开ftp链接     */    public void disconnect() {        try {            if () {                ;            }        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 读取ftp文件流     *     * @param filePath ftp文件路径     * @return s     * @throws Exception     */    public InputStream downloadFile(String filePath) throws Exception {        InputStream inputStream = null;        String fileName = "";        filePath = StringUtils.removeStart(filePath, "/");        int len = filePath.lastIndexOf("/");        if (len == -1) {            if (filePath.length() > 0) {                fileName = filePath;            } else {                throw new Exception("没有输入文件路径");            }        } else {            fileName = filePath.substring(len + 1);            String type = filePath.substring(0, len);            String[] typeArray = type.split("/");            for (String s : typeArray) {                ;            }        }        byte[] data;        try {            data = ;            inputStream = new ByteArrayInputStream(data);        } catch (Exception e) {            e.printStackTrace();        }        return inputStream;    }    /**     * 上传文件到ftp     *     * @param file     文件对象     * @param filePath 上传的路径     * @throws Exception     */    public void uploadFile(File file, String filePath) throws Exception {        InputStream inStream = new FileInputStream(file);        uploadFile(inStream, filePath);    }    /**     * 上传文件到ftp     *     * @param inStream 上传的文件流     * @param filePath 上传路径     * @throws Exception     */    public void uploadFile(InputStream inStream, String filePath)            throws Exception {        if (inStream == null) {            return;        }        String fileName = "";        filePath = StringUtils.removeStart(filePath, "/");        int len = filePath.lastIndexOf("/");        if (len == -1) {            if (filePath.length() > 0) {                fileName = filePath;            } else {                throw new Exception("没有输入文件路径");            }        } else {            fileName = filePath.substring(len + 1);            String type = filePath.substring(0, len);            String[] typeArray = type.split("/");            for (String s : typeArray) {                if (!checkDirectory(ftp, s)) {                    ;                }            }        }        (inStream, fileName);    }    /**     * 删除ftp文件     *     * @param filePath 文件路径     * @throws Exception     */    public void deleteFile(String filePath) throws Exception {        String fileName = "";        filePath = StringUtils.removeStart(filePath, "/");        int len = filePath.lastIndexOf("/");        if (len == -1) {            if (filePath.length() > 0) {                fileName = filePath;            } else {                throw new Exception("没有输入文件路径");            }        } else {            fileName = filePath.substring(len + 1);            String type = filePath.substring(0, len);            String[] typeArray = type.split("/");            for (String s : typeArray) {                if (checkDirectory(ftp, s)) {                    ;                }            }        }        ;    }    /**     * 切换目录     *     * @param path     * @throws Exception     */    public void changeDirectory(String path) {        if (!ValidateUtils.isEmpty(path)) {            try {                ;            } catch (Exception e) {                e.printStackTrace();            }        }    }}复制代码
/** * Ftp 工具类 */public class FtpHelper {    private FTPClient ftp;    public FtpHelper() {    }    /**     * 初始化Ftp信息     *     * @param ftpServer   ftp服务器地址     * @param ftpPort     Ftp端口号     * @param ftpUsername ftp 用户名     * @param ftpPassword ftp 密码     */    public FtpHelper(String ftpServer, int ftpPort, String ftpUsername,                     String ftpPassword) {        connect(ftpServer, ftpPort, ftpUsername, ftpPassword);    }    /**     * 连接到ftp     *     * @param ftpServer   ftp服务器地址     * @param ftpPort     Ftp端口号     * @param ftpUsername ftp 用户名     * @param ftpPassword ftp 密码     */    public void connect(String ftpServer, int ftpPort, String ftpUsername, String ftpPassword) {        ftp = new FTPClient();        try {            ("UTF-8");            ;            ;            ;            ;            ;            (ftpUsername, ftpPassword);            ;        } catch (Exception e) {            e.printStackTrace();            ftp = null;        }    }    /**     * 更改ftp路径     *     * @param ftp     * @param dirName     * @return     */    public boolean checkDirectory(FTPClient ftp, String dirName) {        boolean flag;        try {            ;            flag = true;        } catch (Exception e) {            e.printStackTrace();            flag = false;        }        return flag;    }    /**     * 断开ftp链接     */    public void disconnect() {        try {            if () {                ;            }        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 读取ftp文件流     *     * @param filePath ftp文件路径     * @return s     * @throws Exception     */    public InputStream downloadFile(String filePath) throws Exception {        InputStream inputStream = null;        String fileName = "";        filePath = StringUtils.removeStart(filePath, "/");        int len = filePath.lastIndexOf("/");        if (len == -1) {            if (filePath.length() > 0) {                fileName = filePath;            } else {                throw new Exception("没有输入文件路径");            }        } else {            fileName = filePath.substring(len + 1);            String type = filePath.substring(0, len);            String[] typeArray = type.split("/");            for (String s : typeArray) {                ;            }        }        byte[] data;        try {            data = ;            inputStream = new ByteArrayInputStream(data);        } catch (Exception e) {            e.printStackTrace();        }        return inputStream;    }    /**     * 上传文件到ftp     *     * @param file     文件对象     * @param filePath 上传的路径     * @throws Exception     */    public void uploadFile(File file, String filePath) throws Exception {        InputStream inStream = new FileInputStream(file);        uploadFile(inStream, filePath);    }    /**     * 上传文件到ftp     *     * @param inStream 上传的文件流     * @param filePath 上传路径     * @throws Exception     */    public void uploadFile(InputStream inStream, String filePath)            throws Exception {        if (inStream == null) {            return;        }        String fileName = "";        filePath = StringUtils.removeStart(filePath, "/");        int len = filePath.lastIndexOf("/");        if (len == -1) {            if (filePath.length() > 0) {                fileName = filePath;            } else {                throw new Exception("没有输入文件路径");            }        } else {            fileName = filePath.substring(len + 1);            String type = filePath.substring(0, len);            String[] typeArray = type.split("/");            for (String s : typeArray) {                if (!checkDirectory(ftp, s)) {                    ;                }            }        }        (inStream, fileName);    }    /**     * 删除ftp文件     *     * @param filePath 文件路径     * @throws Exception     */    public void deleteFile(String filePath) throws Exception {        String fileName = "";        filePath = StringUtils.removeStart(filePath, "/");        int len = filePath.lastIndexOf("/");        if (len == -1) {            if (filePath.length() > 0) {                fileName = filePath;            } else {                throw new Exception("没有输入文件路径");            }        } else {            fileName = filePath.substring(len + 1);            String type = filePath.substring(0, len);            String[] typeArray = type.split("/");            for (String s : typeArray) {                if (checkDirectory(ftp, s)) {                    ;                }            }        }        ;    }    /**     * 切换目录     *     * @param path     * @throws Exception     */    public void changeDirectory(String path) {        if (!ValidateUtils.isEmpty(path)) {            try {                ;            } catch (Exception e) {                e.printStackTrace();            }        }    }}复制代码
如何使用
    public static void main(String[] args) {        try {            // 从ftp下载文件            FtpHelper ftp = new FtpHelper("127.0.0.1", 21, "root", "123456");            File file = new File("D:\1.doc");            (file, "test/weradsfad2.doc");            ;        } catch (Exception e) {            e.printStackTrace();        }    }

作者:Ijiran

链接:

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签: #java上传文件ftp