oyb*_*k.t 2 django amazon-s3 pillow
我正在尝试下面我编写的代码,但它抛出了一个错误。我不确定我做错了什么。任何帮助表示赞赏
def upload_img(request):
maxsize = (1024, 1024)
im = Image.open(request.FILES['image'])
im.thumbnail(maxsize)
img_name = 'test.jpg'
s3 = boto3.client('s3')
s3.put_object(
Bucket=settings.AWS_S3_DEV_IMG_BUCKET,
Key=img_name,
Body=im.save(img_name, "JPEG"),
ContentType='image/jpeg',
)
Run Code Online (Sandbox Code Playgroud)
错误:
'ParamValidationError: Parameter validation failed:
Invalid type for parameter Body, value: None, type: <type 'NoneType'>, valid types: <type 'str'>, <type 'bytearray'>, file-like object
Run Code Online (Sandbox Code Playgroud)
该Image.save()方法不返回图像,而是将其保存到磁盘(或缓冲区)并返回None. 这就是 boto 抱怨NoneType参数的原因。
您想将数据保存到某个临时缓冲区,然后将其传递给 boto。例如:
buffer = io.BytesIO()
im.save(buffer, "JPEG")
buffer.seek(0) # rewind pointer back to start
s3.put_object(
Bucket=settings.AWS_S3_DEV_IMG_BUCKET,
Key=img_name,
Body=buffer,
ContentType='image/jpeg',
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2532 次 |
| 最近记录: |