2013-04-07 2 views
4

Когда пользователь загружает изображение в Google Cloud Storage, мне нужно получить имя файла (хешированное имя в облаке, а не имя пользователя), чтобы удалить файл после.Как получить созданное имя файла, когда пользователь загружает файл в Google Cloud Storage?

Я прочитал вопрос:

BlobService.getUploads() возвращает Blobstore blobKeys даже при использовании GS. https://code.google.com/p/googleappengine/issues/detail?id=8337

В GAE SDK примечаний 1.7.5 релиза:

Служба Blobstore теперь возвращает созданное имя файла вместо BlobKey при использовании Cloud Storage.

Однако я не знаю, как получить созданное имя файла службой Blobstore.

Мой код:

icon = self.get_uploads('icon') 
if icon: 
    blob_info = icon[0] 
    img_key = str(blob_info.key()) 
    img_filename = blob_info.filename 
    img_size = blob_info.size 
    img_type = blob_info.content_type 
    img_creation = blob_info.creation 
    img_url = images.get_serving_url(blob_info.key()) 

Спасибо за вашу помощь.

Update:

Наконец я Google и получить вопрос:

self.get_uploads ('файл') [0] возвращает Blobstore blobKeys даже при использовании GS. https://code.google.com/p/googleappengine/issues/detail?id=9051

магические коды:

fileInfo = blobstore.parse_file_info(self.request.POST['file']) 
logging.info(fileInfo.gs_object_name) 

Это работает!

Так что я могу использовать gs_object_name удалить файл:

files.delete(fileInfo.gs_object_name) 

ответ

0

Вместо того, чтобы использовать «имя файла», вы можете просто использовать «BlobKey» для большинства операций, включая удаление файла