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