[英]put_object into s3 boto3 gives a damaged file
我有一个从S3获取视频并对其执行一些操作的功能(从原始文件中获取缩略图和简短视频)。
我设法下载了文件并进行了操作。 但是,当我尝试上传它时,它总是给我一个损坏的文件。 有人知道原因吗?
我正在使用Python 3.6和boto3。
我的代码:
thumb_img = './frames/0/40.png' #img thumb path
save_img = 'thumb_img_' + video_name.split('.')[0] + '.png'
session.put_object(ACL='public-read',
Body=thumb_img,
Key='PATH/TO/SUBFOLDER/' + save_img,
Bucket= BUCKET_NAME )
有谁知道为什么文件损坏?
根据提供的文档 , put_object
调用的Body
put_object
将“字节或可搜索的类似于文件的对象”作为值,同时提供文件名。
以下代码打开文件,并提供文件描述符作为正文:
thumb_img = './frames/0/40.png' # img thumb path
save_img = 'thumb_img_' + video_name.split('.')[0] + '.png'
with open(thumb_img, 'rb') as fd:
session.put_object(ACL='public-read',
Body=fd,
Key='PATH/TO/SUBFOLDER/' + save_img,
Bucket=BUCKET_NAME)
因此,问题在于我尝试直接上传文件。 put_object
bytes or seekable file-like object
。 因此,解决方案是通过打开文件并获取文件的实际正文来实现的。
所以代码:
thumb_img = './frames/1/40.png' #img thumb path
save_img = 'thumb_img_' + video_name.split('.')[0]+'.png'
with open(thumb_img , 'rb') as fd:
session.put_object(ACL='public-read',
Body=fd,
Key='PATH/TO/SUBFOLDER/' + save_img,
Bucket=BUCKET_NAME)
谢谢您的帮助..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.