2017-06-14 50 views
1

ブラウザから直接S3からファイルをダウンロードしようとしています。私はNodeJS + Webpackと共にAWS Javascript SDKを使用しています。AWS S3ブラウザから直接ファイルをダウンロード

私はGetObjectリクエストを行うことができ、 "Developer tools"ビューでバイトをダウンロードしているブラウザ(Chrome)を見ることができます。

私はのように設定応答で「コンテンツ配置」ヘッダ持っている:私はダイアログまたは(ダウンロードフォルダに)私のファイルシステム内に作成されている任意のファイル「名前を付けて保存」が表示されないただし

Content-Disposition:attachment; filename="A1.jpeg" 

を。バイトはどこに行きますか?

データをファイルに保存するにはどうすればよいですか? 、私は前にこのケースに直面した

var getObject = function getObject(bucketName, fileName) { 

    var params = { 
     Bucket: bucketName, 
     Key: fileName, 
     ResponseContentDisposition: 'attachment; filename="' + fileName + '"' 
    }; 

    return s3.getObject(params).promise(); 

} 

getObject(BUCKET_NAME, item) 
.then(
    function (getFileResponse) { 
     console.log(" file downloaded.. "); 
    } 
    , 
    function(error) { 
     // Common error handling 
     console.log(" error = " + error); 
}) 
+0

GetObjectリクエストを投稿できますか? – Nickel

+0

@ニッケル:私のコードで質問を更新しました.. – Manish

答えて

1

それから私は、次のように代わりに "s3.getObject" の "s3.getSignedUrl" 機能を使用:

は、ここに私のコードです

s3.getSignedUrl('putObject',s3Params).then(function(url){ 
    //the returned "url" used by the browser to download 
},function(error){ 
    //Error handling 
}) 

とs3Params (Buckey、キー "オブジェクト名"など)が含まれます

+0

これは興味深いです..私のファイルは巨大(GB)です。ユーザーがダウンロードを開始した場合はどうなりますか - ダウンロードを開始するためだけに必要な署名付きURLですか、ダウンロードが続行されている間は何ですか? – Manish

+0

デベロッパーツールを使ってそのURLを盗聴することもできますか?もし許可されていない他のユーザーがファイルをダウンロードすることもできます。 – Manish

+0

私の場合、認証の問題に関しては、URLの生成中にのみ承認が必要ですが、そのURLを生成できるユーザーには別のカスタム認証があります。 –