>我正在开发一个允许客户端上传大型tar.gz文件的播放应用程序。
i举个例子,用户可以使用此curl命令上传文件名"testfile.tar.gz"。
curl -v -F "corpusFile=@testfile.tar.gz" -F "description=Large File Test" API_ENDPOINT
当用户尝试上传一个非常大的文件时,例如 大约 3GB .它总是失败返回此错误:-
curl: (55) 发送失败: 连接已中止
还有我在播放服务器日志中看到的异常:-
java.nio.channels.ClosedChannelException
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.cleanUpWriteBuffer(AbstractNioWorker.java:409)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.writeFromUserCode(AbstractNioWorker.java:127)
at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:99)
at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:36)
at org.jboss.netty.channel.Channels.write(Channels.java:725)
at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.doEncode(OneToOneEncoder.java:71)
at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59)
at com.typesafe.netty.http.pipelining.HttpPipeliningHandler.handleDownstream(HttpPipeliningHandler.java:87)
at play.core.server.netty.PlayDefaultUpstreamHandler.sendDownstream(PlayDefaultUpstreamHandler.scala:428)
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$play$core$server$netty$PlayDefaultUpstreamHandler$$handle$1$6$$anonfun$13.apply(PlayDefaultUpstr
eamHandler.scala:210) 在
我正在使用播放 2.2.1 版本。我尝试在 application.conf 中设置最大长度大小并设置请求超时,但这似乎没有帮助。我在我的应用程序.conf文件中添加了以下行:-
#Max Length
parsers.text.maxLength = 10024K
#Request Timeout
ws.timeout=1200000
如果其他人遇到类似的问题或知道这里发生了什么,那将是很大的帮助。
3 GB 是一个要上传的大文件,需要时间。因此,请增加 curl 的执行时间。同时添加此参数。
-m 1200000
或
--max-time 1200000
这里的值以秒为单位。