Bootstrap

Java 上传文件到FTP服务器

依赖的包

commons-net 包

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
</dependency>

使用方法

    /**
     * @param hostname    ftp 服务器ip
     * @param port        ftp服务器端口号
     * @param username    用户名
     * @param password    密码
     * @param basePath    ftp服务器根路径
     * @param inputStream 文件输入流
     * @param remote      ftp远程服务器文件名
     * @return 是否上传成功
     * @throws IOException
     */
    public static boolean uploadFile(String hostname, int port, String username, String password, String basePath, FileInputStream inputStream, String remote) throws IOException {
        //1、创建一个FtpClient对象
        FTPClient ftpClient = new FTPClient();

        //2、创建FTP连接
        ftpClient.connect(hostname, port);

        //3、登录FTP 服务器,使用用户名密码
        ftpClient.login(username, password);

        //4、上传文件
        // FTPClient默认是 字符串,会将二进制转为 utf-8字符串。
        // 上传二进制文件
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        //切换路径,这样可以将文件上传到此路径,否则会上传到根路径
        ftpClient.changeWorkingDirectory(basePath);
        boolean re = ftpClient.storeFile(remote, inputStream);

        //5、关闭连接
        ftpClient.logout();

        return re;
    }
  • 测试代码

     @Test
        public void testFTPClient() throws IOException {
    
    
            String hostname = "192.168.43.106";
            int port = 21;
            String username = "ftpuser";
            String password = "123456";
            String basePath = "/home/ftpuser/www/img";
            File imageFile = new File("/Users/liujian/Desktop/timg.jpg");
            FileInputStream inputStream = new FileInputStream(imageFile);
            String remote = "mv.jpg";
    
            boolean f = FTPClientUtils.uploadFile(hostname, port, username, password, basePath, inputStream, remote);
            if (f) {
                System.out.println("上传成功");
            } else {
                System.out.println("上传失败");
            }
    
        }
    
;