我想使用 Ext-JS 将带有文件附件的表单提交到使用 Jackson 处理 JSON 的 JAX-RS 服务。
我遇到的问题是 JSON 数据没有 Content-Type 并且我不知道如何设置它?
目前,请求正文如下所示:
-----------------------------4664151417711
Content-Disposition: form-data; name="productBinary"; filename="new.txt"
Content-Type: text/plain
blah
-----------------------------4664151417711
Content-Disposition: form-data; name="myData"
{"MyData": [1,2,3] }
-----------------------------4664151417711--
一切都很好,除了 JSON 部分没有 Content-Type,因此我无法让 JAX-RS 服务将 JSON 反序列化为对象
JAX-RS 服务类似于:
@POST
@Path("/submit")
@Consumes("mulitipart/form-data")
public String submit( MultipartBody body )
{
MyData myData = body.getAttachmentObject("myData",MyData.class);
return "done";
}
有任何想法吗?
更新:
似乎没有“好”的方法可以做到这一点,相反我发现我需要直接调用 json 反序列化器。
ObjectMapper om = new ObjectMapper();
InputStream is = body.getAttachment("myData").getDataHandler().getInputStream()
MyData md = om.readValue(is,MyData.class);