1

Я недавно развернутый мой питон GAE приложение с сервера разработки и моя функция загрузки изображений работает неправильно ...get_uploads из Blobstore Закачай возвращает пустой список, хотя файл отображается в ведре

После небольшого тестирования, кажется, что функция get_uploads из blobstore возвращает пустой список, и, следовательно, я получаю ошибку индексации от обработчика загрузки (также пыталась функция get_file_infos и имела тот же результат)

Однако, когда я проверяю браузер GCS , файл загружен правильно, поэтому моя проблема заключается в том, что я не могу найти способ извлечь ссылку изображения из сообщения в обработчик загрузки.

Кто-нибудь знает, почему это происходит? и если есть способ обойти это?

(форма использует метод пост с многочастных/form-данных, поэтому мы надеемся, что это не проблема)

  • Вот функция, я звоню, чтобы отправлять сообщения в обработчик загрузки:

    upload_url = blobstore.create_upload_url('/upload', gs_bucket_name='BUCKET') 
    result = urlfetch.fetch(url= upload_url, 
             payload=self.request.body, 
             method=urlfetch.POST, 
             headers=self.request.headers) 
    
  • А вот код для обработчика загрузки:

    class UploadHandler(blobstore_handlers.BlobstoreUploadHandler): 
        def post(self): 
         upload_files = self.get_uploads('file') 
         blob_info = upload_files[0] 
         self.response.write(str(blob_info.key())) 
    

ответ

2

Что вы пытаетесь сделать?

Похоже, вы пытаетесь отправить полученное тело GCS. Почему бы не написать его с помощью клиентской библиотеки Google Cloud Storage.

with gcs.open(gcs_filename, 'w', content_type, options={b'x-goog-acl': b'public-read'}) as f: 
    f.write(blob) 
+0

ОК попробует .. я все еще не слишком хорошо знаком с тем, как это работает, не могли бы вы найти какие-либо ссылки, на которые вы можете указать мне? – Dennis

+0

https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/getstarted – voscausa