2013-08-08 2 views
4

blobstore.parse_file_info (cgi.FieldStorage() [ «файл»]) метод не работает для BlobstoreUploadHandler, то FieldStorage, кажется, для добавлялаКак получить FileInfo/gcs имя_файла для файлов, загруженных через BlobstoreUploadHandler?

Там нет информации ГКС имя файла внутри blob_info, что регулярное blob_info от self.get_uploads обеспечивает

кажется только blob_key можно получить, используя обычные методы, однако ГСК имя_файл кажется безопасным выбор для будущего

Как я могу получить ГКС имя_файл файла загружать на url из blobstore.create_upload_url с аргументом gs_bucket_name?

+0

Вы можете обновить свой вопрос с ошибкой вы получаете при использовании parse_file_info? Я сомневаюсь, что он работает для parse_blob_info, а не для parse_file _info. Обратите внимание: если вы используете BlobstoreUploadHandler, вы также можете использовать метод get_file_infos (аналогичный get_uploads). –

+0

cgi.FieldStorage() всегда пуст в BlobstoreUploadHandler, поэтому ошибка KeyError может быть легко создана как на sdk/appengine, так и на get_file_infos - это решение интеграции gs, должно быть известно, спасибо за то, что сообщили мне, но это не так. задокументировано - нет результатов: https://developers.google.com/search/results?q=get_file_infos&p=%2Fappengine, он должен быть документирован, есть много примеров gcs, все они опускают интеграцию BlobstoreUploadHandler. –

+2

Документировано, однако есть нет примеров. Проблема заключается не в том, что функция не работает, а в том, как вы ее используете. cgi.FieldStorage(), создаст и пуст поле, он не вытащит информацию из запроса. Вам действительно нужно вытащить эти данные из параметров. См. Код для get_file_infos в BlobstoreUploadHandler. Но, как я уже говорил, лучше использовать метод BlobstoreUploadHandler.get_file_infos. –

ответ

5
class UploadAPI(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
     file_info = self.get_file_infos()[0] 

     rtn_data = { 
      "filename": file_info.filename, 
      "content_type": file_info.content_type, 
      "creation": file_info.creation, 
      "size": file_info.size, 
      "md5_hash": file_info.md5_hash, 
      "gs_object_name": file_info.gs_object_name 
     } 

Я нашел использование в коде, но я не могу найти документ.

В https://developers.google.com/appengine/docs/python/blobstore/fileinfoclass сказал.

Если вы используете рамки веб-приложение или webapp2 приложения, вы можете использовать BlobstoreUploadHandler для более удобного разбора этой информации.

Но нет ничего связано с FileInfo я могу найти в документе BlobstoreUploadHandler https://developers.google.com/appengine/docs/python/tools/webapp/blobstorehandlers

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