如何解决用Quarkus处理多部分/表单数据
我正面临一个问题,我无法在资源中获取表格,变量始终为空
我的资源:
@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);
}
表单模型
public class LogoMultipartForm {
@FormParam("logo")
public byte[] logo;
@FormParam("filename")
@PartType("text/plain")
public String fileName;
}
我的提取请求:
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:
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和logo始终为空。
这是我的pom.xml:
<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>
我看不出问题出在哪里。
我已经看过Multipart的官方resteasy文档,但看不出问题出在哪里。我已经用MultipartFormDataInput测试过了,所有部分都是空的。
在此先感谢您的帮助! :)
解决方法
您缺少依赖项:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
确保您的@PartType("text/plain")
继承自org.jboss.resteasy包!以及@MultipartForm
(导入org.jboss.resteasy.annotations.providers.multipart.MultipartForm;)
有一个很好的示例:Quarkus tutorial。看包装!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。