Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一个请求中上载JSON和二进制文件_Java_Google App Engine_Rest - Fatal编程技术网

Java 在一个请求中上载JSON和二进制文件

Java 在一个请求中上载JSON和二进制文件,java,google-app-engine,rest,Java,Google App Engine,Rest,我希望创建一个RESTful API,用于Android和iOS应用程序。到目前为止,我一直在尝试在服务器上使用Jersey,然后在客户端使用适当的http库。目前,我一直在使用multipart/related作为请求的mimetype,JSON构成正文的第一部分,然后是一个jpeg图像作为第二部分 到目前为止,我在向服务器发出请求时遇到问题,从Jersey获得的406不可接受。我注意到,multipart/related主要用于发送电子邮件。有没有一种方法可以支持混合类型的内容作为上传,或者

我希望创建一个RESTful API,用于Android和iOS应用程序。到目前为止,我一直在尝试在服务器上使用Jersey,然后在客户端使用适当的http库。目前,我一直在使用
multipart/related
作为请求的mimetype,JSON构成正文的第一部分,然后是一个jpeg图像作为第二部分


到目前为止,我在向服务器发出请求时遇到问题,从Jersey获得的
406不可接受
。我注意到,
multipart/related
主要用于发送电子邮件。有没有一种方法可以支持混合类型的内容作为上传,或者我完全错误地理解了
multipart/related
在这种情况下的用法?

你可能想看看这个博客,了解更多信息,但这里有一个重要的部分可以帮助你:

我希望您需要多部分/表单数据,因为这是多部分/相关的描述的一部分:

多部分/相关媒体类型适用于复合对象
由几个相互关联的身体部分组成。对于一个
多部分/相关对象,无法通过
单独显示身体的组成部分。内容类型 多部分/相关对象的类型由类型参数指定。
“开始”参数(如果给定)通过内容ID指向
包含对象根的主体部分。默认根目录是
多部分/相关主体中的第一个主体部分

有关此mime类型的更多信息,请参见


如果您希望随json正文一起提交图像,可以对图像进行base64编码,并在json中包含base64字符串。然后在服务器端,对字符串进行base64解码,并将图像文件上载到blobstore。请参见此处的文件上载示例(在页面底部)


或者,您可以单独上传到blobstore,并获取上传图像的blobkey。然后,您可以将blobkey包含在发布到服务器的json正文中。使用这种方法,每次需要上传新图像时,您都需要获得uploadurl。

谢谢,这一点让我感到非常简单。我将把它作为一个表单发布到API中,在一个字段中使用对象的JSON字符串,在另一个字段中使用文件。您能分享一些如何为GAE上载执行此操作的示例吗。@AnkurJain,您是指使用带有base64编码blob的blobstore,还是指使用blobstore获取blob密钥?先生,我需要任何在GAE Blobstore中将文件作为Base64编码的Blob上载的示例。对于java,解码Base64:并写入Blobstore:。如果你需要更多的信息,问一个问题。
@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();
}