繁体   English   中英

将图像上传到Google App Engine Blobstore-Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM