上传JSON和二进制文件中的一个请求(Uploading JSON and binary file

2019-09-21 08:45发布

我期待创造与Android和iOS应用使用一个RESTful API。 到目前为止,我一直在尝试在服务器上使用泽西,然后相应的HTTP库在客户端上。 目前,我已经使用multipart/related的mime类型与JSON形成主体的第一部分,然后将JPEG图像作为所述第二请求。

到目前为止,我曾与发出请求到服务器,得到一个问题, 406 Not Acceptable从泽西岛。 我注意到, multipart/related在发送电子邮件主要用于。 有没有实际上,我可以支持混合类型的内容作为上载或有我完全错误理解的使用方式multipart/related在这方面?

Answer 1:

你可能想看看这个博客,以获取更多信息,但在这里是为了帮助你前进的重要组成部分:

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的替代,因为这是多重/相关的描述的一部分:

的多部分/相关的媒体类型是用于复合对象
由若干相互关联的身体部位。 为一个
多部分/相关对象,适当的显示不能被实现
单独地显示所述构成的身体部位。 内容类型的多部分/相关对象的是由类型参数指定。
“开始”参数,如果给定,分,通过内容ID,对
包含该对象的根身体部分。 默认的根是
的多部分/相关的身体内的第一身体部分。

有关这方面的MIME类型,你可以看看

http://tools.ietf.org/html/rfc2387



Answer 2:

如果你是想用JSON身体一起提交的图像,你可以Base64编码的图像,包括在JSON以base64字符串。 然后在服务器端,你的base64解码串并上传图像文件到Blob存储区。 请参阅文件上传例子(在页面的底部)这里https://developers.google.com/appengine/docs/java/blobstore/overview

或者,你可以做一个单独的上传到Blob存储和获取上传的图片中的BlobKey。 然后,您可以在您发布的server.Using这种方法,你将需要每次你需要做一个新的图片上传的时间才能拿到的uploadURL json的身体的BlobKey。



文章来源: Uploading JSON and binary file in one request