当使用AWS签名URL下载大型pdf文件时,可能会遇到浏览器无法打开的问题。这通常是由于超时或文件大小限制引起的。以下是解决此问题的步骤:
在AWS控制台或AWS CLI中,设置Content-Disposition响应头内容为“attachment”即可。
aws s3 cp s3://myBucket/myLargeFile.pdf - • --response-content-disposition="attachment"
这将在下载时自动触发下载对话框。
将文件分片下载可避免下载的文件过大,从而提高下载速度。
以下是示例代码:
import boto3 import requests
s3 = boto3.resource('s3')
client = boto3.client('s3')
bucket_name = 'myBucket' object_key = 'myLargeFile.pdf'
url = client.generate_presigned_url('get_object', Params={'Bucket': bucket_name, 'Key': object_key})
req = requests.get(url, stream=True)
total_size = int(req.headers.get('content-length', 0))
chunk_size = 1024 * 1024 # 1 MB
num_chunks = total_size // chunk_size + (total_size % chunk_size > 0)
def read_chunk(): while True: data = req.raw.read(chunk_size, decode_content=True) if not data: break yield data
response = app.response_class(read_chunk(), mimetype='application/pdf', headers={'Content-Disposition': 'inline'})
return response
通过这些步骤,您可以成功地在
上一篇:AWS签名URL问题