如何在 Quarkus 中处理大文件上传

Roh*_*ran 5 jax-rs quarkus

我的问题有两个:

  1. 我正在寻找一种在 quarkus 应用程序服务器上实现分段文件上传的方法,该服务器允许程序员访问上传的文件。浏览文档似乎有https://quarkus.io/guides/rest-client-multipart,但这并没有告诉我文件存储在服务器上的位置(如果有的话)。

  2. 我也想知道幕后发生了什么。对于大文件(>100MB),内存占用会是什么样子?

kol*_*sus 6

Quarkus 使用以下属性的组合来管理多部分有效负载:

  1. quarkus.http.body.handle-file-uploads=true确定是否接受多部分请求。但根据文档,无论设置为何,您的应用程序仍将接受多部分请求。

  2. quarkus.http.body.uploads-directory上传内容的相对或绝对路径

  3. quarkus.http.body.delete-uploaded-files-on-end控制请求结束时是否清除上传的文件。

  4. quarkus.http.body.preallocate-body-buffer =true根据Content-LengthHTTP 标头中的数字设置用于保存请求正文的缓冲区大小。

我也想知道幕后发生了什么。对于大文件(>100MB),内存占用会是什么样子?

这是一个开放式问题,没有人可以安全地预测。在你尝试之前你不会知道。您的部署模式(本机或 JVM)也很重要 - 本机模式执行串行垃圾收集,并且在 GC 发生时可能会导致更长的等待时间。


vud*_*goc 6

你应该使用quarkus.http.limits.max-body-size,我尝试过并成功使用 200M