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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM