簡體   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