我正在创建一个restful web服务,它处理来自用户的多个文件。从google看来,正确的mime类型应该是multipart/mixed,所以我的java web服务代码(基于Jersey)类似于:
@POST
@Consumes(MultiPartMediaTypes.MULTIPART_MIXED)
@Produces({
MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON
})
@Path("/{Id}")
public CourseBean updateCourse(@PathParam("Id") final String id, final MultiPart multipart)
throws WebServiceException
{
//operations on multipart
String this.id = id;
return null;
}
在浏览器中,我运行以下html以尝试将文件上载到web服务:
<h1></h1>
<p>files</p>
<FORM action="http://localhost:8080/rest/1"
enctype="multipart/mixed"
method="POST">
<p>
name:<INPUT type="text" name="submit-name"><BR>
file <INPUT type="file" name="file"><BR>
attachment <INPUT type="file" name="attachment"><BR>
<INPUT type="submit" value="Send"> <INPUT type="reset">
</FORM>
</body>
</html>
请注意这里的enctype是“multipart/mixed”。但是,在选择文件并单击“发送”按钮后,我的web服务获取的http请求的mime类型将更改为application/x-www-form-urlencoded,这将在web服务端导致“不支持的媒体类型”错误。
但如果我将html中的enctype更改为multipart/form数据,则接收到的请求的mime类型是相同的:multipart/form数据。
所以我的问题是,我如何创建一个html表单来发送mime类型为“multipart/mixed”的http消息?有了这个html,我可以测试我的web服务。
非常感谢你。
最佳答案
HTML表单不支持将数据作为multipart/mixed
发送。它们最接近,你可能想使用的是multipart/form-data
。如果REST webservice只能接受multipart/mixed
,则无法从HTML表单直接调用它。
有关详细信息,请参见此问题:What does enctype='multipart/form-data' mean?
关于html - 如何创建一个HTML表单以发送具有multipart/mixed mime类型的http消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16976299/