首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Quarkus处理多部分/窗体数据

使用Quarkus处理多部分/窗体数据
EN

Stack Overflow用户
提问于 2020-11-07 17:11:34
回答 1查看 5.6K关注 0票数 4

我面临一个问题,我无法在我的资源中获得我的表单,变量总是为空

我的资源:

代码语言:javascript
复制
    @POST
    @Path("/upload-logo")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.TEXT_PLAIN)
    public String uploadLogo (@MultipartForm LogoMultipartForm logoMultipartForm) throws IOException {
        return this.companyService.uploadLogo(username, logoMultipartForm.logo);

    }

形式模型

代码语言:javascript
复制
public class LogoMultipartForm {

    @FormParam("logo")
    public byte[] logo;

    @FormParam("filename")
    @PartType("text/plain")
    public String fileName;
}

我的取货请求:

代码语言:javascript
复制
  uploadLogo: async (file: File) => {
    const form = new FormData();
    form.append("logo", file, "logo.png");
    form.append("filename", "test");

    const { query, abort } = HttpClient.POST(`${COMPANY_URL}/upload-logo`, form);
    let promise = query
      .then((res: any) => {
        console.log("Response", res);
        if (res.status === 200) {
          return res.text();
        } else {
          throw res;
        }
      })
      .then((url: any) => url);

    promise.cancel = abort;

    return promise;
  },

我的HttpClient:

代码语言:javascript
复制
  POST: function (url: string, body: any, config?: any) {
    const controller = new AbortController();
    const signal = controller.signal;
    return { query: fetch(url, { signal, method: "POST", body, ...config }) as any, abort: () => controller.abort() };
  },

可以肯定的是,我正在使用代理进行测试,并且请求实际上是好的:变量fileName和徽标始终为null。

这是我的pom.xml:

代码语言:javascript
复制
  <dependencies>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-junit5</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-smallrye-graphql</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-flyway</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-jdbc-postgresql</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-hibernate-orm-panache</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-reactive-pg-client</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy-qute</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-oidc</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-rest-client</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy-multipart</artifactId>
    </dependency>

  </dependencies>

我看不出问题出在哪里。

我已经看过了多部分的官方resteasy文档,不知道问题出在哪里。我已经用MultipartFormDataInput进行了测试,所有部件都是空的。

谢谢你的帮助!)

EN

回答 1

Stack Overflow用户

发布于 2020-11-12 09:47:14

您缺少了依赖关系:

代码语言:javascript
复制
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-multipart-provider</artifactId>
</dependency>

确保您的@PartType("text/plain")继承自org.jboss.resteasy包!以及@MultipartForm (导入@MultipartForm)

有一个很好的例子说明它是如何工作的:夸库斯教程。看看这些包裹!

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

https://stackoverflow.com/questions/64730336

复制
相关文章

相似问题

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