![](/img/trans.png)
[英]What is the best way to store images in App Engine Blob Storage?
[英]Uploading images to blob store on google app engine
我是App Engine的新手,正在致力於在Blob存儲上上傳圖像。 我正在從android應用程序上傳圖片。 我已計划將Blob鍵保存在實體中,以便在它符合特定條件時可以檢索它。
我的問題是:
1.自從我實現了“上傳處理程序”以來,blob存儲區就不存儲圖像。 在實施“上傳處理程序”之前,它已正確保存。
2.另一個問題是,上傳處理程序未獲取任何Blob鍵。
請在下面找到代碼:
為了上傳圖片,Android中使用了以下代碼:
public void uploadBlobImage( String path, String link ) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(link);
try {
MultipartEntity entity = new MultipartEntity();
entity.addPart("type", new StringBody("photo"));
File file = new File( path );
entity.addPart("data", new FileBody(file, ContentType.create( "image/jpg")/*,"Swapnil.jpg" */));
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);
Log.d( Utils.AppName, "Image uploaded: "+ response.getStatusLine( ));
} catch (Exception e) {
Log.d( Utils.AppName, "Image not uploaded: Exception:"+ e.toString( ));
}
}
上傳鏈接的格式為:
http://<server domain>/_ah/upload/AMmfu6YsZrgX5lDxBjlb5ddPQdGU6kd63WD9nN8FI2rOGpC1VA9qoyYneKYiLvNGNR0Mw-Oi_LyfKzxI9lvL7rjk0CoTuN7O_1rRCmTKLB2c4MOjRWJ8BKuiaquIvcQf-1H47ULHbMoY6w5_lZts8JiG1DDPez8iAQ/ALBNUaYAAAAAUzv_0cB5QIh3hkGn4CokBt0a37zGDAGm/
上傳Blob處理程序的代碼為:
public class UploadBlobHandler extends HttpServlet {
@Override
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads( req );
Set< String > set = blobs.keySet( );
Utils.log.log( Level.SEVERE, "UploadBlobHandler.doPost() size::"+set.size( ));
Iterator< String > iterator = set.iterator( );
while ( iterator.hasNext( )) {
Utils.log.log( Level.SEVERE, "UploadBlobHandler.doPost(): Blobstore key: "+iterator.next( ));
}
List< BlobKey> list = blobs.get("data");
for(int i=0;list !=null && i<list.size( );i++){
BlobKey key = list.get( i );
Utils.log.log( Level.SEVERE, "UploadBlobHandler.doPost(): Blobstore key: "+key.getKeyString( ));
}
}
我嘗試在web.xml中添加和刪除以下條目:
<servlet>
<servlet-name>UploadBlobHandler</servlet-name>
<servlet-class>com.swapnilutilities.eRecommendation.servlets.UploadBlobHandler</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadBlobHandler</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
在android上,將生成以下日志:
Image uploaded: HTTP/1.1 200 OK
在服務器日志上是:
0.1.0.30 - - [02/Apr/2014:05:02:02 -0700] "POST /upload HTTP/1.1" 200 53 - "Apache-HttpClient/UNAVAILABLE (java 1.4)" "domain.com" ms=327 cpu_ms=260 cpm_usd=0.000006 app_engine_release=1.9.2 instance=00c61b117cbb73996c2a0799c02bf971906801e2
E 2014-04-02 17:32:02.764
package.UploadBlobHandler doPost: UploadBlobHandler.doPost() size::0
E 2014-04-02 17:32:02.765
package.utils.Utils writeResponse: Swapnil: writeResponse():{"status":0,"ec":0}
為此,請指導我。
問題解決了。 雖然我不明白為什么會這樣。 我變了
new FileBody(file, ContentType.create( "image/jpg")/*,"Swapnil.jpg"*/ )
至
new FileBody(file, ContentType.create( "image/jpg"),"Swapnil.jpg" ).
由於某種原因,它解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.