![](/img/trans.png)
[英]Uploading to BlobStore in Google App Engine from a Command Line Java Application
[英]Uploading Image To Google App Engine Blobstore - Java
我试图将图像从Android客户端上传到我的Google App Engine Blobstore,但是遇到问题。 我发现的所有相关帖子都使用了现在不推荐使用的HttpEntity。 我的代码导致服务器返回500错误。
Android客户端代码:
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("file", new FileBody(file, ContentType.MULTIPART_FORM_DATA));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
httppost.setEntity(reqEntity.build());
HttpResponse httpResponse = httpclient.execute(httppost);
String response = EntityUtils.toString(httpResponse.getEntity());
服务器(App Engine)代码:
public class BlobUpload extends HttpServlet {
@Override
private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req);
BlobKey blobKey = blobs.get("file").get(0);
res.setStatus(HttpServletResponse.SC_OK);
res.setContentType("text/plain");
if (blobKey == null) {
res.getWriter().print("failure");
} else {
res.getWriter().print("success");
}
}
}
我已经根据我所看到的例子尝试了几次其他的变通,但都无济于事。 这包括通过将以下行添加到我的客户代码中来将Content-Type设置为Multipart / Form-Data:
builder.setBoundary("--theboundary--");
httppost.addHeader("Content-Type", "multipart/form-data; boundary=--theboundary--");
我已经对servlet进行了测试,以确保它可以正常工作,因此,我很肯定问题在于将数据发布到服务器的方式。 我已经搜索了MIME和App Engine文档(两者均受限制),并且找不到解决方案。 任何想法/建议或工作示例将不胜感激。
如您从getUploads的Javadoc https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/blobstore/BlobstoreService#getUploads(HttpServletRequest)所看到的,仅应使用对于由createUploadUrl生成的请求。 是您在“新HttpPost(url);”中使用的URL 顺便说一句,您是否看到了如何使用GAE将文件从android应用上传到google应用引擎 (以及有关使用多部分的评论-参见http://evgeny-goldin.com/blog/uploading-files-multipart-post- apache / )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.