【发布时间】:2019-07-09 13:49:17
【问题描述】:
这里有很多链接建议使用multipart/form-data 以及如何在此处上传文件。无法真正找到通过 CURL 命令上传的多个文件的组合以及接受 FormDataMultiPart 的 REST 服务的组合。
目前服务中的代码如下:
@javax.ws.rs.POST
@javax.ws.rs.Path("/sample-bulk")
@javax.ws.rs.Consumes(javax.ws.rs.core.MediaType.MULTIPART_FORM_DATA)
public javax.ws.rs.core.Response bulkUpload(@FormDataParam("file") org.glassfish.jersey.media.multipart.FormDataMultiPart multiPart) {
log.info("{} log", multiPart.getField("file"));
return Response.ok().build();
}
我尝试调用该服务的 CURL 为:
curl -X POST "http://localhost:37200/api/sample-bulk" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "file=@/Users/naman/Desktop/Media/video.mp4;type=video/mp4"
但它导致multiPart 在服务中成为null,当然在 NPE 中。
我在这里错过了什么愚蠢的事情?
【问题讨论】:
-
A sample suggestion online 使用
FormDataMultiPart,因为我开始怀疑这是否受到某种方式的支持。 -
当你使用
FormDataMultiPart时,你不使用@FormDataParam。FormDataMultiPart是整个请求正文(所有部分)。当您想要获取 individual 零件时,您可以使用@FormDataParam,您可以使用零件的名称作为注释值。也许this 可能会提供一些澄清。另请查看Jersey docs for Multipart -
@PaulSamsotha 非常感谢您的回复。我会在一段时间内查看文档,尽管我可以通过最小的示例验证删除
@FormDataParam是否可以为multiPart添加价值。
标签: java curl jersey jax-rs multipartform-data