zoukankan      html  css  js  c++  java
  • ftp上传工具类&FTPClient通过代理连接到FTP服务器

    ftp上传工具类&FTPClient通过代理连接到FTP服务器

    ftp上传工具类,直接封装使用Hutool的ftp

    • pom依赖
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>4.6.8</version>
    </dependency>
    
    • yml配置
    ftp:
      file-path: /ftp/pcloud-adss/
      host: 127.0.0.0.1
      port: 21
      user: root
      password: root
    
    • FtpUtil.java
    package cn.pconline.pcloud.base.util;
    
    import cn.hutool.core.util.CharsetUtil;
    import cn.hutool.extra.ftp.Ftp;
    import cn.hutool.extra.ftp.FtpMode;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    /**
     * @Description Ftp上传下载工具
     * @Author jie.zhao
     * @Date 2020/6/4 10:08
     */
    @Component
    public class FtpUtil {
    
        @Value("${ftp.host}")
        public String host;
    
        @Value("${ftp.port}")
        public int port;
    
        @Value("${ftp.user}")
        public String user;
    
        @Value("${ftp.password}")
        public String password;
    
        @Value("${ftp.file-path}")
        public String filePath;
     
        /**
         * 上传到Ftp
         *
         * @param fileName
         * @param in
         */
        public boolean upload(String fileName, InputStream in) {
    
            Ftp ftp = null;
            try {
                //服务器不需要代理访问
                //ftp = new Ftp(host, port, user, password);
                //服务器需要代理访问,才能对外访问
                ftp = new Ftp(host, port, user, password, CharsetUtil.CHARSET_UTF_8, FtpMode.Passive);
                return ftp.upload(filePath, fileName, in);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (ftp != null) {
                        ftp.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return false;
        }
    }
    
    

    FTPClient通过代理连接到FTP服务器

    问题:线上服务器需要使用代理才能访问外部。

    FTPClient通常处于活动模式(Active),如果您的代理无法启动tcp连接回客户端计算机(出于防火墙/ DMZ原因),则必须切换到被动模式(Passive)。

    ftp = new Ftp(host, port, user, password, CharsetUtil.CHARSET_UTF_8, FtpMode.Passive);
    
  • 相关阅读:
    Codeforces Round #644 (Div. 3)(A~G)
    【】BZOJ3687: 简单题(dp+bitset)
    [LeetCode] 275. H-Index II
    [LeetCode] 1028. Recover a Tree From Preorder Traversal
    [LeetCode] 1014. Best Sightseeing Pair
    [LeetCode] 468. Validate IP Address
    [LeetCode] 701. Insert into a Binary Search Tree
    [LeetCode] 658. Find K Closest Elements
    [LeetCode] 787. Cheapest Flights Within K Stops
    [LeetCode] 1300. Sum of Mutated Array Closest to Target
  • 原文地址:https://www.cnblogs.com/cnsyear/p/13140463.html
Copyright © 2011-2022 走看看