首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetty 11 -只有当文件是视频时上传才会失败

Jetty 11 -只有当文件是视频时上传才会失败
EN

Stack Overflow用户
提问于 2021-09-16 22:01:31
回答 1查看 204关注 0票数 0

我有一个嵌入式的jetty服务器来处理文件上传。

在上传 of 、任意大小的文件时,文件被正确上传,请求结束。但是,由于某种原因,当上传的文件是视频文件时,jetty像往常一样启动request.getParts(),但它永远不会结束,并且始终处于空闲状态,最终以超时结束。

我尝试过许多其他文件格式、图像、zip、pdfs,它们都很好用。

问题出现在上传特定格式上,我不知道是因为它们是视频还是别的什么,但我从互联网上下载了很多视频样本,并尝试将它们上传到码头,问题出现在.mp4、.3gp and.mov上,但不是针对.mkv文件。

在jetty日志停止之前,下面是最后一行:

代码语言:javascript
复制
21:38:08:628 [qtp915349526-16] DEBUG: produceRawContent updated rawContentArrived to 12834785 and firstByteTimeStamp to 109772550050391 AsyncContentProducer@67554002[r=null,t=null,i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8640}]
21:38:08:628 [qtp915349526-16] DEBUG: produceRawContent produced Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null} AsyncContentProducer@67554002[r=null,t=null,i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8640}]
21:38:08:628 [qtp915349526-16] DEBUG: null interceptor, transformed content = raw content AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=null,i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8640}]
21:38:08:629 [qtp915349526-16] DEBUG: transformed content is not empty AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8641}]
21:38:08:629 [qtp915349526-16] DEBUG: returning transformed content AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8641}]
21:38:08:629 [qtp915349526-16] DEBUG: available = 8192 AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8641}]
21:38:08:629 [qtp915349526-16] DEBUG: available=8192 HttpInput@1246248597 cs=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0} cp=org.eclipse.jetty.server.BlockingContentProducer@6a92fa25 eof=false
21:38:08:630 [qtp915349526-16] DEBUG: checkMinDataRate [m=0,t=109772550050391] AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8642}]
21:38:08:630 [qtp915349526-16] DEBUG: nextTransformedContent AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8642}]
21:38:08:630 [qtp915349526-16] DEBUG: returning transformed content AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8642}]
21:38:08:631 [qtp915349526-16] DEBUG: nextContent = Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null} AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8643}]
21:38:08:631 [qtp915349526-16] DEBUG: onReadIdle HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0}
21:38:08:631 [qtp915349526-16] DEBUG: nextContent async producer returned Content@714714d8{DirectByteBufferR@48200ff0[p=0,l=8192,c=8192,r=8192]={<<<\x1de.C\x1f\\\x1f]&M+\x95%\x7f\xDf\x03\x8aI\xE4'$\x0e!\xA6\x13...\xBd\xFd\xD9\x9a\xEa<\x93\xC2\xE5ux"vIf"LF\xA2t\x03=:>>>},spc=false,eof=false,err=null}
21:38:08:631 [qtp915349526-16] DEBUG: read produced 8192 byte(s) HttpInput@1246248597 cs=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0} cp=org.eclipse.jetty.server.BlockingContentProducer@6a92fa25 eof=false
21:38:08:632 [qtp915349526-16] DEBUG: reclaim Content@714714d8{DirectByteBufferR@48200ff0[p=8192,l=8192,c=8192,r=0]={\x1de.C\x1f\\\x1f]&...LF\xA2t\x03=:<<<>>>},spc=false,eof=false,err=null} AsyncContentProducer@67554002[r=Content@714714d8{DirectByteBufferR@48200ff0[p=8192,l=8192,c=8192,r=0]={\x1de.C\x1f\\\x1f]&...LF\xA2t\x03=:<<<>>>},spc=false,eof=false,err=null},t=Content@714714d8{DirectByteBufferR@48200ff0[p=8192,l=8192,c=8192,r=0]={\x1de.C\x1f\\\x1f]&...LF\xA2t\x03=:<<<>>>},spc=false,eof=false,err=null},i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8644}]
21:38:08:632 [qtp915349526-16] DEBUG: releaseRequestBuffer HttpConnection@373d0634::SocketChannelEndPoint@ffd712a{l=/127.0.0.1:42069,r=/127.0.0.1:41214,OPEN,fill=-,flush=-,to=5/30000}{io=0/0,kio=0,kro=1}->HttpConnection@373d0634[p=HttpParser{s=CONTENT,12834785 of 13785725},g=HttpGenerator@16634b69{s=START}]=>HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8644}
21:38:08:632 [qtp915349526-16] DEBUG: parseOctetContent(HeapByteBuffer@72ad9ab9[p=0,l=16384,c=16384,r=16384]={<<<N\x15#\xA2\xCa0\x01)\xD9a\x9f\xE8-\x99\x9c\xC5\xF4u\xEf\xE7\xC0\xBfS\xA9\x98...\xBd\xC7\xCc\x9a\x85\x02\x1c\xE5\x13\xBf\xC8qj\xFb}\x06O[\xF1\xE8\xE4)\xDd>>>})
21:38:08:632 [qtp915349526-16] DEBUG: Content=HeapByteBuffer@4aec8a46[p=0,l=16384,c=16384,r=16384]={<<<N\x15#\xA2\xCa0\x01)\xD9a\x9f\xE8-\x99\x9c\xC5\xF4u\xEf\xE7\xC0\xBfS\xA9\x98...\xBd\xC7\xCc\x9a\x85\x02\x1c\xE5\x13\xBf\xC8qj\xFb}\x06O[\xF1\xE8\xE4)\xDd>>>}, Last=false MultiPartParser{s=OCTETS}
21:38:08:633 [qtp915349526-16] DEBUG: nextTransformedContent AsyncContentProducer@67554002[r=null,t=null,i=null,error=false,c=HttpChannelOverHttp@6f3547cb{s=HttpChannelState@18720e7a{s=HANDLING rs=BLOCKING os=OPEN is=IDLE awp=false se=false i=true al=0},r=1,c=false/false,a=HANDLING,uri=http://192.168.1.100/api/v1/files/upload,age=8645}]

这就是我如何设置multipart (它在服务器初始化中):

代码语言:javascript
复制
HttpConfiguration httpConfig = new HttpConfiguration();
httpConfig.setOutputBufferSize(1024);

ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(httpConfig));
connector.setPort(port);

server.addConnector(connector);

ServletHolder jerseyServlet = contextHandler.addServlet(org.glassfish.jersey.servlet.ServletContainer.class, "/api/v1/*");
jerseyServlet.getRegistration().setMultipartConfig(new MultipartConfigElement("/storage/tmp", -1L, -1L, 1));

让我提醒你,就像现在的一切一样,除了那些视频文件之外,文件上传对于任何文件都是完美的。

谢谢你的帮助

编辑:

为了上传视频,我使用PostMan和以下标题:

代码语言:javascript
复制
Content-Type:multipart/form-data
X-Auth-Token:{{token}}
X-UserId:{{userid}}
... plus the default postman headers

我还有一个角度应用程序,它使用以下标题(从铬控制台粘贴的副本)执行这些请求:

代码语言:javascript
复制
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: en,it-IT;q=0.9,it;q=0.8,en-US;q=0.7
Connection: keep-alive
Content-Length: 13785725
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarymajD2TkV6jdqloTj
Host: 192.168.1.100
Origin: http://localhost:4200
Referer: http://localhost:4200/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
X-Auth-Token: mytoken
X-UserId: myuserid

我在这两种情况下都得到了同样的结果。仅就上下文而言,尽管我认为这并不重要,但我有一个虚拟机(Ubuntu20.04),托管接收请求的jetty服务器应用程序,并且在vscode提供的开发服务器上的windows 10 PC上本地运行该角应用程序。

EN

回答 1

Stack Overflow用户

发布于 2021-09-17 19:55:28

13 as是一个很小的上传大小,Jetty项目在单元测试期间上传1GB、4GB和10 1GB文件,既可以作为一个直接的POST,也可以作为一个multipart/form-data

请参阅:https://github.com/eclipse/jetty.project/blob/jetty-11.0.6/jetty-webapp/src/test/java/org/eclipse/jetty/webapp/HugeResourceTest.java

我还使用一个比PostMan更可靠的http客户机运行了一个快速测试。

服务器,运行Jetty11.0.6,并启用演示模块。

代码语言:javascript
复制
$ java -jar ~/code/jetty/distros/jetty-home-11.0.6/start.jar 
2021-09-17 14:24:28.360:WARN :oe.jetty:main: demo-realm is deployed. DO NOT USE IN PRODUCTION!
2021-09-17 14:24:28.401:INFO :oejs.Server:main: jetty-11.0.6; built: 2021-06-29T16:16:33.537Z; git: 69469432898becda3aed32a32d4b0adbb7b6daee; jvm 11.0.12+7
2021-09-17 14:24:28.437:INFO :oejdp.ScanningAppProvider:main: Deployment monitor [file:///home/joakim/code/jetty/distros/bases/base11-demos/webapps/]
2021-09-17 14:24:28.813:WARN :oejshC.ROOT:main: The test-jetty webapp is deployed. DO NOT USE IN PRODUCTION!
2021-09-17 14:24:28.957:INFO :oejss.DefaultSessionIdManager:main: Session workerName=node0
2021-09-17 14:24:29.022:INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@2609b277{Test WebApp,/,file:///home/joakim/code/jetty/distros/bases/base11-demos/work/jetty-0_0_0_0-8080-ROOT_war-_-any-/webapp/,AVAILABLE}{/home/joakim/code/jetty/distros/bases/base11-demos/webapps/ROOT.war}
2021-09-17 14:24:29.182:WARN :oejshC.test:main: The test-jetty webapp is deployed. DO NOT USE IN PRODUCTION!
2021-09-17 14:24:29.246:INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@e6516e{Test WebApp,/test,file:///home/joakim/code/jetty/distros/bases/base11-demos/work/jetty-0_0_0_0-8080-demo-jetty_war-_test-any-/webapp/,AVAILABLE}{/home/joakim/code/jetty/distros/bases/base11-demos/webapps/demo-jetty.war}
2021-09-17 14:24:29.255:INFO :oejs.AbstractConnector:main: Started ServerConnector@4e9658b5{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2021-09-17 14:24:29.267:INFO :oejs.Server:main: Started Server@51891008{STARTING}[11.0.6,sto=5000] @1561ms

接下来,我要测试上传的文件.

代码语言:javascript
复制
$ ls -la security-cam.mp4 
-rw-rw-r-- 1 joakim joakim 2394313303 Sep 17 14:23 security-cam.mp4
$ file security-cam.mp4 
security-cam.mp4: ISO Media, MP4 v2 [ISO 14496-14]

那是2.4GB

让我们使用卷曲上传,使用多个部分,并且不使用Expect: 100-Continue (如您的标题所示)

代码语言:javascript
复制
$ curl --verbose \
  --output multipart-response.html \
  --form file=@security-cam.mp4 \
  --header "Expect: " \
  http://localhost:8080/dump/info
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 127.0.0.1:8080...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8080 (#0)
> POST /dump/info HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.68.0
> Accept: */*
> Content-Length: 2394313511
> Content-Type: multipart/form-data; boundary=------------------------b3d2869d036926f9
> 
} [65536 bytes data]
 88 2283M    0     0   88 2016M      0  1006M  0:00:02  0:00:02 --:--:-- 1005M* We are completely uploaded and fine
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Set-Cookie: JSESSIONID=node03eutgygnhty4ltv47atz8yfb12.node0; Path=/
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Content-Type: text/html;charset=utf-8
< Content-Length: 10721
< Server: Jetty(11.0.6)
< 
{ [10721 bytes data]
100 2283M  100 10721  100 2283M   4704  1001M  0:00:02  0:00:02 --:--:-- 1001M
* Connection #0 to host localhost left intact

因此,它发送了2.4GB,并收到和html响应的一些细节的请求,分析了整个请求主体内容与HttpServletRequest.getParts()和结果来自个人的javax.servlet.http.Part如下所示.

代码语言:javascript
复制
$ html2text multipart-response.html | grep -A5 "Parts"
Parts:
        Part{n=file,fn=security-cam.mp4,ct=application/octet-
    file: stream,s=2394313303,tmp=true,file=/home/joakim/code/jetty/distros/bases/
        base11-demos/work/jetty-0_0_0_0-8080-ROOT_war-_-any-/upload/
        MultiPart7325738426025573814}

是的,所有的2.4GB都被Servlet看作是上传。

是一样的吗?所有上传都没有问题吗?

代码语言:javascript
复制
[client]$ sha1sum security-cam.mp4 
85454d56bc8315fa0484d4d5a9cb9ad54933fbab  security-cam.mp4
[client]$ sha1sum /home/joakim/code/jetty/distros/bases/base11-demos/work/jetty-0_0_0_0-8080-ROOT_war-_-any-/upload/MultiPart7325738426025573814
85454d56bc8315fa0484d4d5a9cb9ad54933fbab  /home/joakim/code/jetty/distros/bases/base11-demos/work/jetty-0_0_0_0-8080-ROOT_war-_-any-/upload/MultiPart7325738426025573814

是的,相同的文件、大小和内容。

在这一点上,问题似乎不是在Jetty。也许是泽西岛?或者更有可能是PostMan?

如果您可以在一个小的测试案例中复制这个问题,您可以尝试与https://github.com/eclipse/jetty.project/issues的Jetty开发人员联系,在这个复制案例中,我们可以缩小第三方库中存在问题的范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69215674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档