Облачные хранилища Google хранят только (48 B) для каждого файла

Я загружаю двоичные файлы JPEG с использованием HTML <form> на моем сервере веб-приложений Python, размещенном на Google App Engine. Серверный метод получает все изображение (попытался успешно распечатать статистику, такую ​​как размер / тип файла и т. Д.), Но не может записать его в хранилище облачного хранилища Google. То, что заканчивается в GCS, - это поврежденный файл размером всего 48 байт.

def handleUpload(self):

  client = self._get_storage_client()
  bucket = client.get_bucket(config.CLOUD_STORAGE_BUCKET)

  results = []

  for name, fieldStorage in self.request.POST.items():
    if type(fieldStorage) is unicode:
      continue
    result = {}
    fileName = urllib.unquote(fieldStorage.filename)
    blob = bucket.blob(fileName)

    blob.upload_from_string(
        str(fieldStorage.file),fieldStorage.type)

    url = blob.public_url
    if isinstance(url, six.binary_type):
        url = url.decode('utf-8')

    results.append(result)

  return results

1 ответ

Решение

Догадаться. На самом деле это должно быть fieldStorage.file.read() вместо fieldStorage.file, потому что он читает файл, используя временный буфер, а не весь файл сразу.