gpt4 book ai didi

java - Commons FTPClient 在上传大文件后挂起

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:25 24 4
gpt4 key购买 nike

我正在使用 Apache Commons FTPClient 3.1 进行简单的文件上传。storefile() 适用于较小的文件(小于 100MB),但当我尝试上传大于 100MB 的文件时,它会完成上传但只是挂起。

我试过像其他人建议的那样进入被动模式,但它似乎并没有解决问题。我已经尝试了多个 FTP 服务器,结果相同,所以我猜它不是主机。

这是我正在做的事情的要点:

ftpClient.connect(...);
ftpClient.login(...);
ftpClient.enterLocalPassiveMode();
boolean success = ftpClient.storeFile(...);
if(success)
...

对于大文件,程序在第 4 行挂起,但确实成功上传了文件。

最佳答案

https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html

超时了。此链接可能会有所帮助。

控制 channel 保活功能:在文件传输期间,数据连接繁忙,但控制连接空闲。 FTP 服务器知道控制连接正在使用中,因此不会因缺乏 Activity 而关闭它,但网络路由器要知道控制连接和数据连接相互关联要困难得多。某些路由器可能会将控制连接视为空闲,如果数据连接上的传输时间超过路由器允许的空闲时间,则会将其断开。一种解决方案是通过控制连接发送安全命令(即 NOOP)以重置路由器的空闲计时器。这是启用如下:

 ftpClient.setControlKeepAliveTimeout(300); // set timeout to 5 minutes

这将导致文件上传/下载方法大约每 5 分钟发送一次 NOOP。

关于java - Commons FTPClient 在上传大文件后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com