2011-07-04 41 views
2

我已經谷歌搜索並閱讀關於BlobStore谷歌App Engine官方網站的文檔,但也有一些問題,我仍然不明白。我的平臺是web應用程序。一些谷歌應用引擎BlobStore問題

文檔我已閱讀:

閱讀所有這些文檔後,我仍然有一些問題:

  1. Blobstore Python API Overview它說:可以由應用程序與一個API調用來讀取Blob存儲數據的最大大小爲1MB。這是什麼意思?這個1MB限制是否適用於sendblob()?採取從webapp Blobstore Handlers下面的代碼作爲示例:

    class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler): 
        def get(self, photo_key): 
         self.send_blob(photo_key) 
    

    是否意味着與photo_key關聯必須小於1MB的照片(其被上載並存儲在Blob存儲區)?從上下文來看,我不這麼認爲。我認爲這張照片可以大到2GB。但我不確定。

  2. ContentType是如何確定的send_blob()?是text/html還是image/jpeg?我可以自己設置一個地方嗎?來自webapp Blobstore Handlers的以下說明非常混亂。對於非英語的演講者來說非常困難。有人可以用代碼示例來解釋它嗎? send_blob()的文檔在哪裏?我無法找到它。

    send_blob()方法接受一個save_as參數,該參數確定blob數據是作爲原始響應數據發送還是作爲帶有文件名的MIME附件發送,這會提示Web瀏覽器使用給定名稱保存文件而不是顯示它。如果參數的值是一個字符串,則blob將作爲附件發送,並且字符串值將用作文件名。如果爲True且blob_key_or_info是BlobInfo對象,則使用該對象的文件名。默認情況下,blob數據作爲響應的主體發送,而不是作爲MIME附件發送。

  3. 有一個文件http://www.example.com/example.avi,它是20MB甚至2GB。我想從互聯網抓取example.avi並將其存儲在BlobStore中。我查過了,urlfetch請求的大小限制是1MB。我搜查並沒有找到解決辦法。

非常感謝!

+0

該urlfetch限制不是1MB - 它是32MB,已經有一段時間了。 –

回答

2
  1. send_blob()不涉及您的應用程序從API讀取文件,因此1MB限制不適用。向用戶返回響應的前端服務將讀取整個blob並將其全部返回(它很可能是以塊爲單位的讀取,但這是您不必擔心的實現細節。

  2. send_blob()設置內容類型要麼斑點的內部存儲類型,或者您用一個可選content_type參數指定send_blob()類型。對於文檔,似乎需要RTFS;有一個文檔字符串(在google.appengine.ext.webapp.blobstore_handlers包。)

  3. 真的沒有什麼好的解決方案從網上抓取任意文件並將它們存儲在Blobstore中。很可能你需要一個運行在其他地方的服務,比如你自己的機器或EC2實例,以獲取這些文件並將它們發佈到應用程序中的blobstore處理程序。

相關問題