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);
-------------已经触及底线 感谢您的阅读-------------