2012-02-28 55 views
2

我在Google app引擎的blobstore中將音頻文件存儲爲blob。我不知道如何獲得一個良好的URL傳遞給客戶端來玩這個blob。我想做類似圖像庫的事情。如何在gae blobstore中爲url提供音頻

image.get_serving_url() 

但是,沒有音頻模塊。那麼,是否有一種很好的方法可以從blob獲取網址來播放音頻或更好地播放媒體?

回答

2

圖像的渲染是由瀏覽器完成的。音頻是一樣的,瀏覽器決定如何處理你指定的資源。爲此,您需要添加正確的MIME類型[1]標題。如果文件在上傳時已經設置了正確的MIME類型,則不需要手動執行此操作。

至於服務的斑點,你需要創建一個Blob存儲下載的處理程序: http://code.google.com/appengine/docs/python/tools/webapp/blobstorehandlers.html#BlobstoreDownloadHandler

[1] http://en.wikipedia.org/wiki/Internet_media_type

+0

感謝您的反饋!上傳時文件具有正確的MIME類型集。我不希望用戶真的下載任何東西。我只希望他們能夠播放音頻。我希望我可以從blob提供正確的URL並通過html5音頻標籤播放。 – Justin 2012-02-28 22:18:09

+0

用音頻標籤播放的東西仍然必須從某個地方提供。你只需下載處理程序就可以下載,並且可以安全到本地磁盤。 – schuppe 2012-02-29 01:19:26

0

我認爲你在尋找什麼是像S3是如何工作的,其中您上傳的斑點會自動獲得一個URL,然後可以直接將其丟棄到瀏覽器中。 Blobstore的設計主要是讓開發人員能夠控制他們的URL和細緻地控制對blob的訪問。它無法簡單地提供基於blob參考的URL。我認爲schuppe的回答在描述你需要做的是正確的。

如果您有興趣在沒有任何形式的身份驗證或限制的情況下爲用戶提供blob,那麼編寫處理程序並不難。在schuppe提到你的文檔中的那個將可以正常工作,但是,要小心,因爲它可以打開你的應用程序直到某些類型的DOS攻擊。另外,如果您按照文檔所做的那樣操作,那麼擁有您的blob-reference字符串的任何人都可以在整個應用程序中訪問任何blob,無論您的意思是否。因此,你應該圍繞它建立一些額外的訪問控制。

當然,如果您不關心控制對數據的訪問,那麼解決方案很簡單,並且可以正常工作。

+0

這是很棒的信息。我只是學習和做一些沙箱測試,所以我並不太在意安全性。但這絕對是一個問題。謝謝。 – Justin 2012-03-02 18:30:47