[英]Image file type is not supported when downloading using urllib3
嗨,我正在下载这样的图像
import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'https://i.picsum.photos/id/192/536/354.png?hmac=a22QkdSZ7zXUHpV4-gnB48PPYaLlcvaTMeDXxcPRxs8')
print(r.data)
然后使用它上传到s3
s3 = boto3.resource(s3')
key = 'file_name + '.png'
bucket = s3.Bucket(bucket_name)
bucket.upload_fileobj(io.BytesIO(r.data), key)
但是当我打开时,当我使用照片打开器打开图像时出现错误“不支持文件类型”
**EDIT:** I did as suggested by passing
ContentType='text/png'
当我通过 url 打开图像时,在 aws 上得到了这个:我使用 presinged url 打开了这个
您实际上并未提及如何添加ContentType
。 这是工作示例,使用boto3.resource()
bucketname = <my-bucket>
filename = <filename>
s3 = boto3.resource('s3')
key = 'image.png'
bucket = s3.Bucket(bucketname)
with open(filename, "rb") as fd:
bucket.upload_fileobj(
fd,
Key=key,
ExtraArgs={
"ContentType": "image/png",
}
)
然后我生成一个预签名的 URL (你没有包括在内,但只要你获得正确的权限,我相信你很好)
expiration = 3600
s3 = boto3.client('s3',
region_name='us-east-2',
config=boto3.session.Config(signature_version='s3v4'))
response = s3.generate_presigned_url(
'get_object',
Params={
'Bucket': bucketname,
'Key': key
},
ExpiresIn=expiration
)
print(response)
在我的浏览器中打开生成的 URL ,它会加载我上传的 PNG 图像。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.