![](/img/trans.png)
[英]Can you download a file from Amazon S3 bucket without having AWS login credentials
[英]Javascript to download a file from amazon s3 bucket?
我試圖從 Amazon S3 上的存儲桶下載文件。 我想知道我是否可以編寫一個 javascript 來從存儲桶中下載這樣的文件。 我在谷歌上搜索它,但找不到任何可以幫助我做到這一點的資源。
需要記住的一些步驟是:對 Amazon S3 進行身份驗證,然后通過提供存儲桶名稱和文件(密鑰),下載或讀取文件,以便我能夠顯示文件中的數據。
謝謝,
也許您可以使用AWS Node.js API :
var AWS = require('aws-sdk');
AWS.config.update(
{
accessKeyId: ".. your key ..",
secretAccessKey: ".. your secret key ..",
}
);
var s3 = new AWS.S3();
s3.getObject(
{ Bucket: "my-bucket", Key: "my-picture.jpg" },
function (error, data) {
if (error != null) {
alert("Failed to retrieve an object: " + error);
} else {
alert("Loaded " + data.ContentLength + " bytes");
// do something with data.Body
}
}
);
我來這里是為了在客戶端下載一個 s3 文件。 這是我解決它的方法:
因為,我無法在客戶端存儲我的 s3 身份驗證密鑰,我使用我的服務器端腳本生成一個預簽名的 url 並將其發送回客戶端,如:
const AWS = require('aws-sdk')
const s3 = new AWS.S3()
AWS.config.update({accessKeyId: 'your access key', secretAccessKey: 'you secret key'})
const myBucket = 'bucket-name'
const myKey = 'path/to/your/key/file.extension'
const signedUrlExpireSeconds = 60 * 5 // your expiry time in seconds.
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myKey,
Expires: signedUrlExpireSeconds
})
// return the url to client
在前端使用這個 URL 來觸發下載:
function download(url){
$('<iframe>', { id:'idown', src:url }).hide().appendTo('body').click();
}
$("#downloadButton").click(function(){
$.ajax({
url: 'example.com/your_end_point',
success: function(url){
download(url);
}
})
});
這里的其他答案有效,但想擴展對我有用的內容。
就我而言,我處理的文件太大了
function download(url){
$('<iframe>', { id:'idown', src:url }).hide().appendTo('body').click();
}
上班。 (獲取url is too long
)我的解決方案是包含一個隱藏的錨標記,並在 ajax 成功時觸發對該標記的點擊。 除非您不關心處理錯誤,否則您不能立即使用錨標記。
如果出現問題,S3 將使用 XML 錯誤文件進行響應,因此瀏覽器將自動顯示該 XML 響應。 通過首先嘗試使用 ajax 訪問 URL,您可以在不顯示丑陋 XML 的情況下捕獲該錯誤。 在該 ajax 調用中成功是當您知道您可以嘗試下載文件時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.