title: Handle multipart/form-data with Quarkus
body: <p>I'm facing an issue, I can't get my form in my resources, the variables are always null</p>
  <p>My Resource :</p>
  <pre><code>    @POST
      @Path(&quot;/upload-logo&quot;)
      @Consumes(MediaType.MULTIPART_FORM_DATA)
      @Produces(MediaType.TEXT_PLAIN)
      public String uploadLogo (@MultipartForm LogoMultipartForm logoMultipartForm) throws IOException {
          return this.companyService.uploadLogo(username, logoMultipartForm.logo);
  
      }
  </code></pre>
  <p>The form model</p>
  <pre><code>public class LogoMultipartForm {
  
      @FormParam(&quot;logo&quot;)
      public byte[] logo;
  
      @FormParam(&quot;filename&quot;)
      @PartType(&quot;text/plain&quot;)
      public String fileName;
  }
  </code></pre>
  <p>My Fetch request :</p>
  <pre><code>  uploadLogo: async (file: File) =&gt; {
      const form = new FormData();
      form.append(&quot;logo&quot;, file, &quot;logo.png&quot;);
      form.append(&quot;filename&quot;, &quot;test&quot;);
  
      const { query, abort } = HttpClient.POST(`${COMPANY_URL}/upload-logo`, form);
      let promise = query
        .then((res: any) =&gt; {
          console.log(&quot;Response&quot;, res);
          if (res.status === 200) {
            return res.text();
          } else {
            throw res;
          }
        })
        .then((url: any) =&gt; url);
  
      promise.cancel = abort;
  
      return promise;
    },
  </code></pre>
  <p>And my HttpClient :</p>
  <pre><code>  POST: function (url: string, body: any, config?: any) {
      const controller = new AbortController();
      const signal = controller.signal;
      return { query: fetch(url, { signal, method: &quot;POST&quot;, body, ...config }) as any, abort: () =&gt; controller.abort() };
    },
  </code></pre>
  <p>To be sure I was testing with a proxy and the request is effectively good : The variable fileName and logo is always null.</p>
  <p>This is my pom.xml :</p>
  <pre><code>  &lt;dependencies&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-resteasy&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-junit5&lt;/artifactId&gt;
        &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.rest-assured&lt;/groupId&gt;
        &lt;artifactId&gt;rest-assured&lt;/artifactId&gt;
        &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-smallrye-graphql&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-flyway&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-jdbc-postgresql&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-hibernate-orm-panache&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-reactive-pg-client&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-resteasy-qute&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-oidc&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-rest-client&lt;/artifactId&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
        &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
        &lt;artifactId&gt;quarkus-resteasy-multipart&lt;/artifactId&gt;
      &lt;/dependency&gt;
  
    &lt;/dependencies&gt;
  </code></pre>
  <p>I don't see where is the problem.</p>
  <p><strong>I have already seen the official resteasy documentation for Multipart and don't see where is the problem. I have already Tested with MultipartFormDataInput and all parts are empty.</strong></p>
  <p>Thanks in advance for your help ! :)</p>