我希望创建一个RESTful API,用于Android和iOS应用。到目前为止,我一直在尝试在服务器上使用Jersey,然后在客户端使用相应的http库。目前我一直使用multipart/related
作为请求的mimetype,JSON构成了身体的第一部分,然后是jpeg图像作为第二部分。
到目前为止,我遇到了向服务器发出请求的问题,从泽西岛获得了406 Not Acceptable
。我注意到multipart/related
主要用于发送电子邮件。实际上是否有一种方法可以支持混合类型内容作为上传,或者我完全误解了multipart/related
在此上下文中的用法?
答案 0 :(得分:2)
您可以查看此博客,了解更多信息,但这是帮助您的重要部分:
http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();
// save it
writeToFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
我希望你想要multipart / form-data,因为这是multipart / related描述的一部分:
Multipart / Related介质类型适用于复合对象
由几个相互关联的身体部位组成。对于一个 多部分/相关对象,无法通过
实现正确显示 单独显示组成的身体部位。内容类型 Multipart / Related对象的类型由type参数指定 如果给出“开始”参数,则通过内容ID指向
包含对象根的正文部分。默认的根是
Multipart / Related团体中的第一个身体部位。
有关此mime类型的更多信息,请查看
答案 1 :(得分:0)
如果您想要将图像与json主体一起提交,则可以对图像进行base64编码并在json中包含base64字符串。然后在服务器端,base64解码字符串并将图像文件上传到blobstore。请在此处查看文件上传示例(位于页面底部)https://developers.google.com/appengine/docs/java/blobstore/overview
或者,您可以单独上载到blobstore并获取上传图像的blobkey。然后,您可以将blobkey包含在发布到服务器的json正文中。使用此方法,每次需要执行新的图像上载时,都需要获取uploadurl。