gpt4 book ai didi

Python requests.put() 破坏上传的图片文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:03 41 4
gpt4 key购买 nike

我正在尝试使用 Python 请求包将图像文件上传到我的 Amazon AWS S3 存储桶。

我的代码打开存储桶,下载图像文件,调整图像大小,将图像保存在本地,然后尝试将保存的图像上传到 S3 存储桶。

一切正常,只是上传的 jpg 文件在某种程度上损坏了,以至于无法再将其视为图像。我已检查正在上传的原始文件没有损坏。

我的代码是:

conn = S3Connection(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket(settings.AWS_STORAGE_BUCKET_NAME)

for key in bucket.list(prefix='media/userphotos'):
file_name=key.name
full_path_filename = 'https://' + settings.AWS_STORAGE_BUCKET_NAME + '.s3.amazonaws.com/' + file_name
fd_img = urlopen(full_path_filename);
img = Image.open(fd_img)
img = resizeimage.resize_width(img, 800)
new_filename = full_path_filename.replace('userphotos', 'webversion')
# Save temporarily before uploading to S3 bucket
img.save('temp.jpg', img.format)
the_file = {'media': open('temp.jpg', 'rb')}
r = requests.put(new_filename, files=the_file, auth=S3Auth(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY))
fd_img.close()

更新

我刚刚注意到,虽然 jpg 文件无法使用网络浏览器或在我的 Mac 上使用预览打开,但可以使用 Adob​​e Photoshop 成功打开!很明显,图像在文件中,但是 requests.put() 创建的 jpg 文件有些东西正在对文件做一些事情,阻止它被网络浏览器读取。奇怪!

最佳答案

改为这样做:

requests.put(url, data=open(filename, 'rb'))

我注意到使用请求库中记录的"file"会在文件前添加一堆垃圾。你用 xxd <filename> 检查它

关于Python requests.put() 破坏上传的图片文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893876/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com