2012-05-11 87 views
4

所以我有一個django應用程序在appengine上運行並在用戶上傳時創建文件。我遇到的問題是試圖找出如何刪除它們。我創建它們的代碼看起來像。從谷歌雲存儲中刪除文件

from google.appengine.api import files 

file = request.FILES['assets_thumbnail'] 
filename = '/gs/mybucketname/example.jpg' 
writable_file_name = files.gs.create(filename, mime_type='image/jpeg', acl='public-read') 
with files.open(writable_file_name, 'a') as f: 
    f.write(file.read()) 
files.finalize(writable_file_name) 

這工作得很好,但在文檔中:

https://developers.google.com/appengine/docs/python/googlestorage/functions

有未列出的刪除方法。但是,如果你看一下實際的源google.appengine.api.files在下面的鏈接(線504)

http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/files/file.py

有,我可以調用刪除的方法,但我想不通爲了我的生活,完全是它想要的論點。我已經嘗試了很多不同的組合與桶名稱等。它似乎希望它以/ blobstore /開頭,這與我迄今爲止與Cloud Storage進行交互時所做的其他任何操作都不同。我一直在瀏覽google.appengine.api.files寫在最上面的底層blobstore類,但仍然無法弄清楚如何刪除項目。看起來我可能需要爲我上傳的項目找到BlobKeys。我可以使用Google託管的基於Web的存儲桶管理器以及它們提供的gsutil命令行實用工具將它們正確刪除。

是否有人通過部署到應用程序引擎的python應用程序成功刪除了谷歌雲存儲中的文件?任何線索/想法/想法都非常感謝。

回答

5

AppEngine release 1.7.0支持使用bigstore API刪除Google Storage對象。

key = blobstore.create_gs_key('/gs/my_bucket/my_object') 
blobstore.delete(key) 

或者,您可以使用其餘API向Google存儲呼叫以刪除該文件。

https://developers.google.com/storage/docs/reference-methods#deleteobject

+0

感謝斯圖爾特。我很高興知道我沒有失蹤。 –