[英]Enable one-click S3 file download without content-disposition header or access to metadata
我希望讓用戶能夠直接從我的站點一鍵從 S3 下載文件,而無需轉到目標 URL,然后右鍵單擊以最終下載原始文件。
據我了解,要在 HTML 中執行此操作,我需要將content disposition
標頭元數據寫入文件,然后再將其存儲在 S3 上,但在生成文件時我無法訪問 S3。
有沒有辦法強制瀏覽器一鍵下載文件,而不需要將用戶發送到s3鏈接手動下載?
盡管瀏覽器安全性似乎阻止以任何其他方式一鍵下載,但使用內容標頭,只要您有權訪問 S3,就有一種方法可以使用signed url
選項請求帶有更新標頭的文件。
就我而言,對於Rails
,只需要一個 S3 gem 和一個對您的存儲桶具有 Get 和 Put 權限的 IAM 用戶。
您的 IAM 策略如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::YOUR_BUCKET/*"
}
]
}
那么,只要
s3 = Aws::S3::Resource.new(
credentials: Aws::Credentials.new(KEY, SECRET),
region: REGION_CODE)
obj = s3.bucket(BUCKET).object(AWS_KEY)
obj.presigned_url(:get, response_content_disposition: 'attachment')
這將返回一個已經是正確標頭的 url,它將在瀏覽器中自動下載。
您的語法會因語言而異,但在任何語言 API 中使用 S3 簽名 url 都應該有些相似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.