2016-07-28 65 views
0

我已經在Java中實現的Blob存儲API此GWT例子來調用。必須從BLOB上傳回調請求

不過,現在我送文件(影像)到同一/上傳服務處理器,但是從我的離線程序(不是瀏覽器)內的蟒蛇要求:

r = requests.post(url+'upload', files= {'myFile': open('fig.jpeg', 'rb')}) 

,我得到下面的異常

必須從團塊上載回叫請求

中(服務器端)的第一行

可以稱爲:

Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req); 
List<BlobKey> blobKeys = blobs.get("myFile"); 

我在做什麼錯?

回答

1

/upload處理程序不適合你直接調用,既不是從瀏覽器也不是一個python應用程序。相反,您的應用程序需要進行兩個調用:第一個到您的服務器以獲取臨時URL,然後第二個上傳到該URL,該URL將直接與blobstore連接。您的服務器應該使用blobstoreService.createUploadUrl生成臨時URL,如鏈接文檔的this section的第1步所述。

在第二次調用(上傳)的過程中,blobstore將直接調用您的上傳處理程序,以通知您的應用程序新的blob(s)。這就是blobstoreService.getUploads(req)知道如何解釋。

所以你的python應用程序將進行2個調用,並且你的服務器也將處理2個請求。第一個請求直接來自python應用程序,只需要url。第二個請求將在期間發生上傳,但實際上將直接來自blobstore。

+0

親愛的Eric!這很有道理:)謝謝你的快速回復。我會詳談! – jankos

+0

有沒有更好的方法從我的python應用程序上傳文件(圖片)到blobstore? – jankos

+0

不,這是最好的方法。這是Google自己在我們鏈接的文檔中概述的方式。您可以考慮使用Google雲端存儲,您可以使用相同的方式上傳(請參閱本節中的(https://cloud.google.com/appengine/docs/java/blobstore/#Java_Using_the_Blobstore_API_with_Google_Cloud_Storage)) ,但也提供了其他選項。儘管我對這些其他選項並不熟悉,但恐怕這是我能在那裏獲得的最大幫助。 –

相關問題