![](/img/trans.png)
[英]How do I upload a file(picture) from android and save to the blobstore using GAE and google endpoints?
[英]Android upload image to Blobstore from Google Endpoints
我將Google Endpoints用於我的Android應用程序。 我想將圖像上傳到Blobstore:
端點獲取上傳網址:
@ApiMethod(name = "generateImageUploadUrl")
public UploadUrl generateImageUploadUrl() {
BlobstoreService blobstoreService =
BlobstoreServiceFactory.getBlobstoreService();
String blobUploadUrl = blobstoreService.createUploadUrl("/blob/upload");
return new UploadUrl(blobUploadUrl); // UploadUrl is an inner class to store the url
}
Android應用中的代碼以上傳圖片:
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(url);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
try{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 75, bos);
byte[] data = bos.toByteArray();
ByteArrayBody bab = new ByteArrayBody(data, "forest.jpg");
reqEntity.addPart("picture", bab);
postRequest.setEntity(reqEntity);
HttpResponse response = httpClient.execute(postRequest);
HttpEntity entity = response.getEntity();
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
}
s.toString();
}
catch(Exception e){
e.getCause();
}
如何獲得圖像的最終URL?
將文件上傳到Blobstore后,您可以生成並以JSON形式返回服務網址,如下所示:
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
List<BlobKey> blobs = blobstoreService.getUploads(req).get("file");
BlobKey blobKey = blobs.get(0);
ImagesService imagesService = ImagesServiceFactory.getImagesService();
ServingUrlOptions servingOptions = Builder.withBlobKey(blobKey);
String servingUrl = imagesService.getServingUrl(servingOptions);
res.setStatus(HttpServletResponse.SC_OK);
res.setContentType("application/json");
JSONObject json = new JSONObject();
json.put("servingUrl", servingUrl);
PrintWriter out = res.getWriter();
out.print(json.toString());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.