首先对于配置FTP服务器

1.1、vsftpd.conf

以装置在linux下的FTP为例,首先查找到vsftpd的配置文件(默认装置的状况下配置文件位于/etc/vsftpd/vsftpd.conf),而后进行编写。具体的表格如下:

choose_local_user=YESchoose_local_user=NO
choose_list_enbale=YES1.所有用户都被限度在其主目录下 2.应用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制1.所有用户都不被限度其主目录下 2.应用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制
choose_list_enable=NO1、所有用户都被限度在其主目录下2.没有例外用户1.所有用户都没有限度,也没有例外用户
package com.manage.util;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;import java.io.*;import static org.apache.commons.codec.binary.StringUtils.newString;/** * @Author: lgz * @Date: 2020/6/8 13:40 */public class FTPConnectUtil {    private String FTP_ADDRESS = "192.168.174.140";    private int PORT = 21;    private String FTP_USERNAME = "admin";    private String FTP_PASSWORD = "123";    private String FTP_PATH = "/home/admin/files";    public FTPClient ftpClient = null;    /**     * 初始化ftp服务器     */    public void initFtpClient() {        ftpClient = new FTPClient();        ftpClient.setControlEncoding("utf-8");        try {            System.out.println("connecting...ftp服务器:" + this.FTP_ADDRESS + ":" + this.PORT);            ftpClient.connect(FTP_ADDRESS, PORT); //连贯ftp服务器            ftpClient.login(FTP_USERNAME, FTP_PASSWORD); //登录ftp服务器            int replyCode = ftpClient.getReplyCode(); //是否胜利登录服务器            if (!FTPReply.isPositiveCompletion(replyCode)) {                System.out.println("connect failed...ftp服务器:" + this.FTP_ADDRESS + ":" + this.PORT);            }            System.out.println("connect successful");        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * 上传文件     *     * @param pathname       ftp服务保留地址     * @param fileName       上传到ftp的文件名     * @param originfilename 待上传文件的名称(相对地址) *     * @return     */    public boolean uploadFile(String pathname, String fileName, String originfilename) {        boolean flag = false;        InputStream inputStream = null;        try {            System.out.println("开始上传文件");            inputStream = new FileInputStream(new File(originfilename));            initFtpClient();            ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);      //     CreateDirecroty(pathname);      //      ftpClient.makeDirectory(pathname);            ftpClient.changeWorkingDirectory(pathname);            ftpClient.storeFile(fileName, inputStream);            inputStream.close();            ftpClient.logout();            flag = true;            System.out.println("上传文件胜利");        } catch (Exception e) {            System.out.println("上传文件失败");            e.printStackTrace();        } finally {            if (ftpClient.isConnected()) {                try {                    ftpClient.disconnect();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (null != inputStream) {                try {                    inputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return true;    }    /**     * 上传文件     *     * @param pathname    ftp服务保留地址     * @param fileName    上传到ftp的文件名     * @param inputStream 输出文件流     * @return     */    public boolean uploadFile(String pathname, String fileName, InputStream inputStream) {        boolean flag = false;        try {            System.out.println("开始上传文件");            initFtpClient();            ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);            ftpClient.enterLocalPassiveMode();            CreateDirecroty(pathname);            ftpClient.makeDirectory(pathname);            ftpClient.changeWorkingDirectory(pathname);            ftpClient.storeFile( new String(fileName.getBytes("GBK"),"ISO-8859-1"), inputStream);            Thread.sleep(200);            System.out.println("正在上传图片");           inputStream.close();            ftpClient.logout();            flag = true;            System.out.println("上传文件胜利");        } catch (Exception e) {            System.out.println("上传文件失败");            e.printStackTrace();        } finally {            if (ftpClient.isConnected()) {                try {                    ftpClient.disconnect();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (null != inputStream) {                try {                    inputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return true;    }    //扭转目录门路    public boolean changeWorkingDirectory(String directory) {        boolean flag = true;        try {            flag = ftpClient.changeWorkingDirectory(directory);            if (flag) {                System.out.println("进入文件夹" + directory + " 胜利!");            } else {                System.out.println("进入文件夹" + directory + " 失败!开始创立文件夹");            }        } catch (IOException ioe) {            ioe.printStackTrace();        }        return flag;    }    //创立多层目录文件,如果有ftp服务器已存在该文件,则不创立,如果无,则创立    public boolean CreateDirecroty(String remote) throws IOException {        boolean success = true;        String directory = remote + "/";        // 如果近程目录不存在,则递归创立近程服务器目录        if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory))) {            int start = 0;            int end = 0;            if (directory.startsWith("/")) {                start = 1;            } else {                start = 0;            }            end = directory.indexOf("/", start);            String path = "";            String paths = "";            while (true) {                String subDirectory = new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");                path = path + "/" + subDirectory;                if (!existFile(path)) {                    if (makeDirectory(subDirectory)) {                        changeWorkingDirectory(subDirectory);                    } else {                        System.out.println("创立目录[" + subDirectory + "]失败");                        changeWorkingDirectory(subDirectory);                    }                } else {                    changeWorkingDirectory(subDirectory);                }                paths = paths + "/" + subDirectory;                start = end + 1;                end = directory.indexOf("/", start);                // 查看所有目录是否创立结束                if (end <= start) {                    break;                }            }        }        return success;    }    //判断ftp服务器文件是否存在    public boolean existFile(String path) throws IOException {        boolean flag = false;        FTPFile[] ftpFileArr = ftpClient.listFiles(path);        if (ftpFileArr.length > 0) {            flag = true;        }        return flag;    }    //创立目录    public boolean makeDirectory(String dir) {        boolean flag = true;        try {            flag = ftpClient.makeDirectory(dir);            if (flag) {                System.out.println("创立文件夹" + dir + " 胜利!");            } else {                System.out.println("创立文件夹" + dir + " 失败!");            }        } catch (Exception e) {            e.printStackTrace();        }        return flag;    }    /**     * 下载文件 *     *     * @param pathname  FTP服务器文件目录 *     * @param filename  文件名称 *     * @param localpath 下载后的文件门路 *     * @return     */    public boolean downloadFile(String pathname, String filename, String localpath) {        boolean flag = false;        OutputStream os = null;        try {            System.out.println("开始下载文件");            initFtpClient();            //切换FTP目录            ftpClient.changeWorkingDirectory(pathname);            //改为被动模式            ftpClient.enterLocalPassiveMode();            System.out.println(filename);            FTPFile[] ftpFiles = ftpClient.listFiles();            for (FTPFile file : ftpFiles) {                int type = file.getType();                if (filename.equalsIgnoreCase(file.getName())) {                    System.out.println(localpath);                    File localFile = new File(localpath + "/" + filename);  //                    os = new FileOutputStream(localFile); //  os ==null                    ftpClient.retrieveFile(newString(filename.getBytes("UTF-8"), "ISO-8859-1"), os);                    os.close();                }            }            ftpClient.logout();            flag = true;            System.out.println("下载文件胜利");        } catch (Exception e) {            System.out.println("下载文件失败");            e.printStackTrace();        } finally {            if (ftpClient.isConnected()) {                try {                    ftpClient.disconnect();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (null != os) {                try {                    os.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return flag;    }    /**     * 删除文件 *     *     * @param pathname FTP服务器保留目录 *     * @param filename 要删除的文件名称 *     * @return     */    public boolean deleteFile(String pathname, String filename) {        boolean flag = false;        try {            System.out.println("开始删除文件");            initFtpClient();            //切换FTP目录            ftpClient.changeWorkingDirectory(pathname);            ftpClient.dele(filename);            ftpClient.logout();            flag = true;            System.out.println("删除文件胜利");        } catch (Exception e) {            System.out.println("删除文件失败");            e.printStackTrace();        } finally {            if (ftpClient.isConnected()) {                try {                    ftpClient.disconnect();                } catch (IOException e) {                    e.printStackTrace();                }            }        }        return flag;    }}