我将zip文件加载到内存中(不要将其保留在磁盘上)。该zip文件包含jpg图像。我正在尝试将每个jpg上传到s3但是收到错误。
# already have an opened zipfile stored in zip_file
# already connected to s3
files = zip_file.namelist()
for f in files:
im = io.BytesIO(zip_file.read(f))
s3_key.key = f
s3_key.set_contents_from_stream(im)
我收到以下错误:
BotoClientError:BotoClientError:s3不支持分块传输
我做错了什么?
答案 0 :(得分:7)
这是解决方案。我在想这个问题。
files = zip_file.namelist()
for f in files:
data = zip_file.read(f)
s3_key._key.key = f
s3_key._key.set_contents_from_string(data)
这就是全部。
答案 1 :(得分:2)
除了S3之外,Boto还支持其他存储服务,例如Google Cloud Storage。 set_contents_from_stream方法仅适用于支持分块传输的服务(请参阅https://codereview.appspot.com/4515170)。 S3不支持(请参阅http://aws.amazon.com/articles/1109上的技术常见问题解答。)
很不幸,但您无法从流上传到S3。