从S3下载Excel文件不起作用

时间:2019-09-11 00:02:41

标签: python amazon-web-services amazon-s3 flask

我正在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)

1 个答案:

答案 0 :(得分:0)

首选方法是提供对象的 URL ,他们可以使用该URL直接从Amazon S3下载。这还具有减轻应用服务器流量的好处。

如果对象是私有对象,则可以生成Amazon S3 pre-signed URLs,这是一个提供对私有对象的时间限制访问的URL。