我正在尝试使用一个预先签名的URL在我的s3 bucket中上传一个文件,它工作得很好,并且成功地将数据上传到bucket,但是,我上传的文件非常大,我需要能够显示进度条。我在StackOverflow和其他博客文章中尝试了许多解决方案,但似乎没有任何效果
下面是使用预签名URL将数据上载到s3的代码片段
object_name = 'DataSet.csv'
response = create_presigned_post("mybucket_name",object_name)
fields = response['fields']
with open(object_name, 'rb') as f:
files = {'file': (object_name, f)}
http_response = requests.post(response['url'], data=fields, files=files,stream=True)
print (http_response.status_code)
它返回成功上传的204状态
现在,我可以对这段代码进行哪些更改以显示进度条
附言
我在请求中尝试了stream=True
,但请求无效。
我曾尝试使用tqdm对响应进行迭代,但在这种情况下也不起作用
我认为没有办法通过使用默认协议
HTTP POST
request的presignedUrl
上传一个大文件。 您可以通过使用AWSS3的多部分上传机制来实现这一点。通过这种方式,您可以了解上传的每个部分,并据此计算进度。 我创建了一篇文章,其中包含使用多部分上传和presignedUrl
(typescript)https://www.altostra.com/blog/multipart-uploads-with-s3-presigned-url的代码片段下面的代码可以很好地用于Python,我发现它here
相关问题 更多 >
编程相关推荐