【问题标题】:Quarkus Resteasy reactive multipart streamQuarkus Resteasy 反应式多部分流
【发布时间】:2021-11-02 02:35:40
【问题描述】:

问题:Quarkus Resteasy 响应式是否可以立即开始处理上传文件而无需等待文件完全上传?

示例代码:

class FileUploadForm {
    @RestForm
    @PartType(MediaType.TEXT_PLAIN)
    lateinit var title: String

    @RestForm
    @PartType(MediaType.TEXT_PLAIN)
    lateinit var description: String

    @RestForm
    lateinit var file: FileUpload
}

@Path("/upload")
class UploadResource {    
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    suspend fun upload(form: FileUploadForm): Response {
        val file = form.file.uploadedFile()
        //... do processing only after upload
    }
}

到目前为止我发现了什么:

  • 对于上传,我们只能使用 FileUpload 类型(最好有 Vert.x AsyncFile 或类似的,它是流式下载顺便说一句的选项)
  • 有一个接口org.jboss.resteasy.reactive.server.core.multipart.FormDataParser,您可以在其中修改多部分表单处理,但看起来默认实现由 Quarkus 管理,我不确定它是否易于配置。

【问题讨论】:

  • 如果我理解正确的话,你想在文件上传完成之前调用你的upload方法吗?
  • 据我所知,您需要在 tmp 中完全下载文件,然后才能在代码中处理请求,至少目前是这样,因为可能会有更多部分。
  • @geoand 基本上,是的,在将文件保存到临时目录之前执行处理会很棒。
  • @JavierToja 是有道理的,但是我们可以在收到最终的 HTTP 部分时立即开始处理部分并完成处理。

标签: resteasy quarkus multipart reactive


【解决方案1】:

具有 RESTEasy Reactive 的 Quarkus 不支持该用例。 我什至不确定 Vert.x 是否真的如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 2021-07-13
    • 2021-06-19
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多