일부 파일 업로드를 받아서 최대 S3까지 전송하는 응용 프로그램을 만듭니다. 내 서버에 tmp 파일을 갖고 싶지 않기 때문에 Knox 모듈을 사용하고 Formidable에서 원시 스트림을 가져 와서 Knox를 통해 S3로 보내고 싶습니다. 이 코드를 사용하여 파일을 다운로드 녹스를 사용하여 비슷한 일을했을 :node-formidable 파일 업로드에서 원시 파일 스트림에 액세스
knox.downloads.get(widget.download).on('response',function(sres){
res.writeHead(200, {
'Content-Type':'application/zip',
'Content-Length': sres.headers['content-length'],
'Content-Disposition':'attachment; filename=' + widget.download
});
util.pump(sres, res);
}).end();
지금 내가 (S3에 브라우저에서 파일 업로드)를 oposite 방향으로 비슷한 일을하고 싶습니다. 이 업로드되는 것 같이 내가 파일에서 데이터의 각 부분을 캡처하는 이벤트 핸들러를 작성했습니다 지금까지
:
var form = new formidable.IncomingForm();
form.onPart = function(part){
if(!part.filename){
form.handlePart(part);
}else{
if(part.name == 'download'){
// Upload to download bucket
controller.putDownload(part);
}else{
// Upload to the image bucket
controller.putImage(part);
}
//res.send(sys.inspect(part));
}
}
form.parse(req, function(err, fields, files){
if(err){
res.json(err);
}else{
res.send(sys.inspect({fields:fields, files:files}), {'content-type':'text/plain'});
//controller.createWidget(res,fields,files);
}
});
controller.putDownload = function(part){
part.addListener('data', function(buffer){
knox.download.putStream(data,part.filename, function(err,s3res){
if(err)throwError(err);
else{
console.log(s3res);
}
});
})
knox.downloads.putStream(part, part.filename, function(err,s3res){
if(err)throwError(err);
else{
console.log(s3res);
}
});
}
그러나 데이터 이벤트는 나에게 버퍼를 제공합니다. 그렇다면 스트림 자체를 캡처하여 S3에 푸시 할 수 있습니까?
나는 너무 붙어서 다발로 전환이 해결 –