FTP 传输文件,不报错,但是文件就是不能写入成功

 使用 FTPClient 时产生的问题

 

代码如下

public class LUX_FtpFile_mxJPO {
public void uploadFTPFile(Context context, String args[]){
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
try{
ftpClient.connect("luxottica-redcarpet.ftp.upload.akamai.com");
ftpClient.login("luxottica-redcarpet", "MO7OSsY5");
File srcFile = new File("/tmp/00R000003__2600.jpg");
fis = new FileInputStream(srcFile);
ftpClient.changeWorkingDirectory("758608/TEST/TMK/0R/");
ftpClient.setBufferSize(1024);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile("00R000003__2600.jpg", fis);

} catch (SocketException e) {
e.printStackTrace();
throw new RuntimeException("ftp client error", e);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("ftp client error", e);
}finally{
IOUtils.closeQuietly(fis);
try{
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("close ftp exception", e);
}
System.out.println("uploaded succesfully");
}
}
}

不报错,目的路径下面根本刷不出来文件
解决办法
加如下代码f

tpClient.enterLocalPassiveMode();


这是 设置 传输模式的 FTPClient 有四种传输模式
ACTIVE_LOCAL_DATA_CONNECTION_MODE
ACTIVE_REMOTE_DATA_CONNECTION_MODE
PASSIVE_LOCAL_DATA_CONNECTION_MODE
PASSIVE_REMOTE_DATA_CONNECTION_MODE

上面的方法是设置为模式
PASSIVE_LOCAL_DATA_CONNECTION_MODE
根据FTPClient的官方文档,可以总结出
四种不同的模式之间的主要不同主要是因为FTP 可以建立在 服务器和本地 以及 服务器和服务器之间。
默认传输模式为
ACTIVE_LOCAL_DATA_CONNECTION_MODE , 而这种模式下,数据传输是从 服务器到本地
如果想要本地到服务器,那么就需要设置 模式为
PASSIVE_LOCAL_DATA_CONNECTION_MODE
就是上面的代码
tpClient.enterLocalPassiveMode();


详细解释参考 官方文档
http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html#ACTIVE_LOCAL_DATA_CONNECTION_MODE


posted @   danieldai  阅读(2717)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示