2017-09-17 20 views
0

aws-sdk-jsライブラリを介して大きなファイルをs3にアップロードするためのかなりのnice exampleがありますが、残念ながらnodeJs fsを使用しています。AWS-SDK-JSを使用して、プレーンJavascriptでs3へのストリームとして大きなファイルをアップロード

Plain Javascriptで同じことを達成できる方法はありますか?ここにはまた、大きいファイルを小さなチャンクに分割するnice Gistもありますが、asw-sdk-jsアップロード機能に渡す必要があるnodeJs fsの.pipe機能がまだありません。 Nodeに関連するコードスニペットもあります。

var fs = require('fs'); 
var zlib = require('zlib'); 

var body = fs.createReadStream('bigfile').pipe(zlib.createGzip()); 
var s3obj = new AWS.S3({params: {Bucket: 'myBucket', Key: 'myKey'}}); 
s3obj.upload({Body: body}). 
    on('httpUploadProgress', function(evt) { 
    console.log('Progress:', evt.loaded, '/', evt.total); 
    }). 
    send(function(err, data) { console.log(err, data) }); 

Plain JS(non nodeJs)で使用できるものはありますか? Railsで使用できます。

具体的には、Plain JSの次の行に代わるものです。

var body = fs.createReadStream('bigfile').pipe(zlib.createGzip()); 

答えて

0

同じあなたlink you providedは、ブラウザのために意図実装が含まれ、それはまた、AWS client SDKを使用しています。

// Get our File object 
var file = $('#file-chooser')[0].files[0]; 

// Upload the File 
var bucket = new AWS.S3({params: {Bucket: 'myBucket'}); 
var params = {Key: file.name, ContentType: file.type, Body: file}; 
bucket.upload(params, function (err, data) { 
    $('#results').html(err ? 'ERROR!' : 'UPLOADED.'); 
});