首页 文章

谷歌 Cloud 存储仅存储(48 B)每个文件

提问于
浏览
3

我正在使用html <form> 将二进制jpeg文件上传到我在Google App Engine上托管的python webapp服务器 . 服务器方法接收整个图像(尝试成功打印统计数据,如文件大小/类型等),但无法将其写入谷歌 Cloud 存储桶 . 最终在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 回答

  • 0

    弄清楚了 . 实际上它应该是fieldStorage.file.read()而不是fieldStorage.file,因为它使用临时缓冲区而不是整个文件一次读取文件 .

相关问题