程序员的资源宝库

网站首页 > gitee 正文

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

sanyeah 2024-04-12 17:39:32 gitee 5 ℃ 0 评论

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);

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表