我正在Flask中创建一个Web应用程序。 而且我正在尝试创建一个页面,以便用户可以下载在S3存储桶中上传的excel文件。
但是代码不起作用,并且出现此错误:
UnicodeEncodeError:“ latin-1”编解码器无法对位置41-43中的字符进行编码:序数不在范围(256)之内
以下是我正在使用的代码:
# download file from s3
my_bucket = s3_resource.Bucket(BUCKET_NAME)
file = my_bucket.Object(file_name).get()
try:
return Response(
file['Body'].read(),
mimetype='application/vnd.ms-excel',
headers={"Content-Disposition": "attachment;filename={}".format(file_name)}
)
except Exception as e:
return str(e)
答案 0 :(得分:0)
首选方法是提供对象的 URL ,他们可以使用该URL直接从Amazon S3下载。这还具有减轻应用服务器流量的好处。
如果对象是私有对象,则可以生成Amazon S3 pre-signed URLs,这是一个提供对私有对象的时间限制访问的URL。