2011-04-14 167 views
0

我目前正在將網站遷移到Google App Engine。以前,所有的圖像和靜態資源(這些東西的100幾MB)只是部署的一部分。將Blob批量上傳到Google App Engine

現在,很明顯,我應該在GAE中使用Blob存儲(否則更新應用程序將是巨大的痛苦!)。

我需要將這些圖像從我的磁盤上批量上傳到GAE,並懷疑我需要某種腳本來執行此操作。任何想法或建議的最佳方法?

+0

你可能要考慮把這些靜態的資產在亞馬遜S3,因爲如果你把它們上傳到Blob存儲,您需要一種方式來爲他們提供服務之前,將它們的友好名稱(「圖像/ logo.png」),以他們的Blobstore鍵。這會給你的項目增加更多的複雜性和膨脹,並且可能使其難以維護。 – Calvin 2011-04-14 23:55:42

+0

其實,它很容易在GAE中以友好名稱提供文件。看到我關於這個主題的另一個問題的例子:http://stackoverflow.com/questions/5671901/referencing-blobs-in-gae-the-smart-way – ConfusedNoob 2011-04-15 02:52:35

+0

我應該注意 - 我不知道有多昂貴在BlobStore上的CPU的這個工作是(通過文件名選擇,就是這樣)。 – ConfusedNoob 2011-04-15 02:57:05

回答

1

當前的bulkloader不支持此功能,但可以自己編寫一個。該過程如下所示:

  1. 編寫處理上傳的斑點的處理程序,如here所述。讓它將新創建的blob的關鍵字寫入數據存儲區,或者通過重定向將其返回給上傳器,或者最適合您應用程序的任何內容。
  2. 編寫上傳腳本。您可以使用remote_api調用blobstore create_upload_url函數,然後使用urllib上載文件。請確保以多部分形式對文件進行編碼,blobstore才能正確識別它。

請注意,上傳應用程序只上傳修改過的文件,因此您可以存儲大量靜態內容,並且只有在它們發生更改時纔會上傳。但是,這可能不會對您有所幫助,因爲應用程序的大小限制爲300MB。

+0

謝謝,我會和他們一起玩,並且在我得到它的時候給予回答。順便說一句,上傳作爲應用程序的另一個原因是行不通的,因爲應用程序允許部署後動態上傳。 BlobStore是明確的選擇。再次感謝。 – ConfusedNoob 2011-04-15 02:56:30

+0

嗨,尼克,我幾乎在那裏感謝您的幫助。讓這一切都運行,並使用MultipartPostHandler(http://pipe.scs.fsu.edu/PostHandler/MultipartPostHandler.py)幫助我使用urllib2上傳文件。但是,我得到了500錯誤,沒有任何信息可以幫助...思考? URL = blobstore.create_upload_url( '/文件') 開罐器= urllib2.build_opener(MultipartPostHandler.MultipartPostHandler) PARAMS = { 「文件」:打開( 「..文件路徑..」, 「RB」) 開罐器.open(url,params) ... HTTPError:HTTP錯誤500: 沒有詳細信息?沒有幫助,不知道!? :( – ConfusedNoob 2011-04-18 02:44:06

+0

@ConfusedNoob默認情況下,應用程序引擎是一個標準500頁捕獲的異常,因爲用戶不需要看到的堆棧跟蹤(它可以是一個安全隱患)。檢查你的應用程序的管理控制檯,在日誌部分,看到堆棧跟蹤。 – 2011-04-18 02:47:07

-1

比這更容易。有一個免費的應用程序,可以讓你拖放文件到你的雲存儲。退房CloudBerry

+0

這是無關緊要的,因爲它沒有上傳到App Engine blobstore。 – 2011-04-15 01:10:18

+0

慚愧,本來是完美的:/ – ConfusedNoob 2011-04-15 02:55:04

相關問題