当前位置: 首页 > 面试题库 >

大型文件上传后,Commons FTPClient挂起

王凌
2023-03-14
问题内容

我正在使用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

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

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

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

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



 类似资料:
  • 我想上传100MB以上的文件。

  • 我想将文件上载到minio文件容器 较小的文件按预期使用此代码: 我需要为要上传的minio服务提供一个。 较小的文件按预期工作(将存储到容器中)。但是较大的文件(在我的测试中为12 MB)不起作用。 我得到了这个例外:

  • 我也有这里提到的同样的问题。 然后我想把它作为一个上传体流到另一个服务endpoint。 该解决方案的生成方式如下:bodytype=org.springframework.web.reactive.function.bodyinserters不支持

  • 我运行一个简单的后端应用程序,允许上传文件。我使用泽西岛并在码头运行它。我的代码部分如下所示: 上传工作正常,但我发现该方法是在整个流上传到后端时调用的。因此,例如,如果我发送大文件(要上传3Gigs),我的POST请求会立即出现在后端,但只有当整个3Gigs通过网络上传时才会调用上面的方法。 我想在方法中进行一些检查,并且在某些情况下不上传文件,因此它不需要将整个内容传递到后端,然后将错误消息发

  • 本文向大家介绍PHP文件上传问题汇总(文件大小检测、大文件上传处理),包括了PHP文件上传问题汇总(文件大小检测、大文件上传处理)的使用技巧和注意事项,需要的朋友参考一下 由于涉及到本地和服务器两方面的安全问题,所以基于input type="file"形式的页面文件上传一直处于一个很尴尬的位置。一方面,用户不希望隐私泄露,所以浏览器无法对用户在上传时选择的文件做有效的判 断。另一方面,为了服务器

  • 问题内容: 我有以下代码来检查(上传的简历和推荐信是否与所需类型(pdf或doc或docx)匹配)和大小(小于400 kb) 这无法正常工作,甚至连txt文件都没有通过+大小限制,这是怎么回事? 谢谢, 问题答案: 下面仅使用mime类型来验证文件,然后检查两者的大小。有关大多数MIME类型的列表,请参见此处或google。