2017-09-17 5 views
0

을 사용하여 Plain Javascript로 s3 스트림에 큰 파일을 업로드 aws-sdk-js 라이브러리를 통해 대용량 파일을 s3에 업로드하는 데 사용할 수있는 꽤 nice example이 있지만 불행히도 nodeJs fs를 사용합니다.AWS-SDK-JS

Plain Javascript에서 같은 것을 얻을 수있는 방법이 있습니까? 여기에 멋진 Gist도 있습니다.이 파일은 대용량 파일을 작은 덩어리로 나눕니다. 그러나 여전히 asw-sdk-js 업로드 기능에 전달해야하는 nodeJs fs의 .pipe 기능이 없습니다. 다음은 노드에서 관련 코드 스 니펫입니다.

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.'); 
});