2012-05-11 2 views
4

Итак, у меня есть приложение django, работающее на appengine, и создайте его, когда пользователь загружает их. Проблема, с которой я сталкиваюсь, пытается выяснить, как их удалить. Мой код для их создания выглядит.Удалить файлы из Google Cloud Storage

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 /, который отличается от всего, что я сделал до сих пор при взаимодействии с облачным хранилищем. Я просматривал основные классы blobstore, которые написаны поверх google.appengine.api.files, но по-прежнему не могут точно определить, как удалить элементы. Похоже, мне может понадобиться найти BlobKeys для загруженных мной элементов. Я могу их легко удалить, используя ведомый менеджер веб-сайтов, который содержит хосты google, а также утилиту командной строки gsutil, которую они предоставляют.

Удалось ли кому-нибудь удалять файлы из облачного хранилища Google через приложение python, развернутое в приложении? Любые подсказки/мысли/идеи приветствуются.

ответ

5

AppEngine release 1.7.0 имеет поддержку для удаления объектов Google Storage с использованием API Bigstore.

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

В качестве альтернативы вы можете использовать API-интерфейс остального, чтобы позвонить в Google Storage, чтобы удалить файл.

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

+0

Thanks Stuart. Я рад узнать, что не было чего-то, чего я не видел. –

Смежные вопросы