我正在用原生應用程序和雲應用程序組件構建一個非常簡單的項目。 Android應用程序只需拍攝一張照片,並通過POST將其上傳到URL。然後,雲應用程序將顯示接收到的照片,這些照片存儲在GAE數據存儲區中。如何從Android發送圖像並在GAE上接收圖像?
目前,Android應用似乎正確發送照片,並且它從服務器接收HTTP OK。但是,當我去查看雲應用程序中的圖像時,我沒有看到圖像,而且它看起來像一個空白的條目。
如果我的android應用程序組件無法正確發送圖像,或者雲應用程序組件無法接收它,我現在還不確定。我已經能夠成功測試圖片可以上傳,通過使用一個簡單的形式發佈到上傳網址,這很好。
我唯一看不到的地方是android代碼沒有設置'照片'的標題名稱並將其分配給照片的數據。但是,我似乎無法弄清楚如何設定,我不相信這是唯一的問題。
我用這個頁面來幫助Android的代碼發送文件:How to send a file in Android from mobile to server using http?
這裏是重要的Android代碼:
private class SendPhotoTask extends AsyncTask<File, Void, Void> {
@Override
protected Void doInBackground(File... photoFile) {
if (photoFile != null) {
String urlToConnect = "http://example.com/upload";
// Use a static file for testing
File photoFile2 = new File("/storage/emulated/0/Pictures/PNG_20141206_190223_-1388180531.png");
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(urlToConnect);
InputStreamEntity reqEntity = new InputStreamEntity(
new FileInputStream(photoFile2), -1);
reqEntity.setContentType("binary/octet-stream");
reqEntity.setChunked(true); // Send in multiple parts if needed
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);
Log.d(DEBUG_TAG, response.getStatusLine().toString());
} catch (Exception e) {
Log.d(DEBUG_TAG, "Exception Caught: " + e);
}
}
return null;
}
}
的SendPhotoTask類與此執行:
new SendPhotoTask().execute(photoFile);
這是服務器上非常簡單的代碼(用Python編寫,使用webapp2),它接受我的圖像:
class Gallery(BaseRequestHandler):
def post(self):
gallery_name = self.request.get('gallery_name',
DEFAULT_GALLERY_NAME)
greeting = Photo(parent=gallery_key(gallery_name))
greeting.photo = base64.b64encode(str(self.request.get('photo')))
greeting.put()
query_params = {'gallery_name': gallery_name}
self.redirect('/?' + urllib.urlencode(query_params))
我在這裏做錯了什麼?
我想說,首先添加一些日誌記錄到像photoFile == null這樣的邊緣,並記錄服務器上的所有內容,看看是否有任何請求完成。 此外,當使用「MultipartEntity」(即使有一個部分?)像這樣的答案時,人們似乎會得到更好的結果:http://stackoverflow.com/a/1068132/1334771(以及如何實例化一個MultipartEntity http ://stackoverflow.com/a/19196621/1334771) – halflings 2014-12-07 09:39:02