问题描述
我正在尝试设置一个端点,该端点允许上传多个文件以及其他表单数据。将此视为创建产品页面,您将在其中拥有几张产品图片和其他信息。理想情况下,我想将请求映射到 POJO
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/product/create")
public Response createProduct(@MultipartForm CreateProductRequest req) {
还有 POJO:
@Data
public class CreateProductRequest {
@FormParam("name")
private String name;
@FormParam("description")
private String description;
@FormParam("tags")
private List<String> tags;
@FormParam("img")
@PartType(MediaType.APPLICATION_OCTET_STREAM)
private List<InputStream> img; //Ideally I Could use an object such as multipartfile
//that would give me access to the filename and MIME type
}
但这不起作用,我明白了:
java.lang.RuntimeException: RESTEASY007545: Unable to find a MessageBodyReader for media type:
image/jpeg;charset=UTF-8 and class type java.util.List
如果我删除 List
,它工作正常。
它似乎与 List<String> tags
抛出:
java.lang.RuntimeException: RESTEASY007545: Unable to find a MessageBodyReader for media
type: text/plain;charset=UTF-8 and class type java.util.List
我已经看到使用 MultipartFormDataInput
的解决方法,但我真的很想避免这种情况,因为请求 obj 非常大,并且手动映射它会非常繁琐且容易出错。
我正在运行 Java 11,Quarkus 1.11.1.Final
非常感谢!
解决方法
带有 @MultipartForm
注释的 POJO 不支持使用带有 List
的文件