簡體   English   中英

啟用一鍵式 S3 文件下載,無需內容處置標頭或訪問元數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM