在 AWS 環境中,我想通過 API 網關將檔案上傳到 S3。我不能使用 lambda,因為 6MB 有效負載限制。(API 網關的 10MB 限制很好。)我可以設法上傳一個帶有 POST 請求和二進制正文的檔案。我的問題是如何上傳包含在 multipart/form-data 中的圖片,并且可以在不使用 lambda 函式的情況下設定檔案大小和格式限制嗎?
uj5u.com熱心網友回復:
您應該使用 aws-sdk 創建 API 端點并獲取 url:
API 代碼(aws-sdk API 檔案):
- 供上傳,參考
s3.getSignedUrl('putObject') - 不要
S3.putObject用于上傳檔案,這是一個不同的概念 - 例子:
return new Promise((resolve, reject) => { let url = this.S3.getSignedUrl("getObject", { Bucket: bucket, Key: key, Expires: expires_second }) return resolve(url)
- 供上傳,參考
S3 存盤桶配置(參考鏈接):
- 選擇您的存盤桶
- 權限選項卡 > 跨域資源共享 (CORS) > 編輯
[ { "AllowedHeaders": [ "*", "Authorization" ], "AllowedMethods": [ "POST", "GET", "PUT", "DELETE", "HEAD" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [], "MaxAgeSeconds": 3000 } ] - 確認您
AllowedMethods現有的PUT方法
上傳檔案(郵遞員案例)
- 復制并粘貼從中獲取的鏈接
s3.getSignedUrl('putObject') - 正文選項卡 > 二進制 > 選擇您的檔案
- 標頭 > 取消選中“內容型別”、“用戶代理”
- [可選]如果你想接受選擇的檔案型別,編輯
{ Accept: '*/*'}- 例子:
{Accept: 'image/png' }
- 例子:
- 使用PUT方法發送
- 復制并粘貼從中獲取的鏈接
現在您可以檢查 s3 存盤桶
其他有用的參考: https ://medium.com/@aidan.hallett/securing-aws-s3-uploads-using-presigned-urls-aa821c13ae8d
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497094.html
上一篇:是否可以使用bashcmd獲取file1減去file2的內容?
下一篇:在Laravel中推入會話問題
