मैं एक ऐसा एप्लिकेशन बना रहा हूं जो कुछ फ़ाइल अपलोड करता है और उन्हें सीधे S3 पर भेजता है। मैं अपने सर्वर पर टीएमपी फ़ाइल भी नहीं करना चाहूंगा, इसलिए मैं नॉक्स मॉड्यूल का उपयोग कर रहा हूं और कच्चे स्ट्रीम को फॉर्मिडेबल से लेना चाहता हूं और इसे नॉक्स पर एस 3 पर भेजना चाहता हूं। मैं इस कोड का उपयोग एक फाइल डाउनलोड करने के लिए नॉक्स का उपयोग कर कुछ इसी तरह किया है:एक नोड-फॉर्मिडेबल फ़ाइल से कच्ची फ़ाइल स्ट्रीम तक पहुंच
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();
अब मैं (एस 3 को ब्राउज़र से फ़ाइल अपलोड) विपरीत दिशा में कुछ इसी तरह करना चाहते हैं।
अब तक मैं एक ईवेंट हैंडलर लिखा है फ़ाइल से डेटा के प्रत्येक टुकड़े पर कब्जा करने के रूप में अपलोड किया जा रहा है:
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);
}
});
}
लेकिन डेटा घटना सिर्फ मेरे बफर दे। तो क्या स्ट्रीम को स्वयं कैप्चर करना और इसे एस 3 पर धक्का देना संभव है?
पर स्ट्रीमिंग का एक उदाहरण भी है, मैं इतनी अटक गया और इसे हल करने के लिए बहुपक्षीय स्विचिंग –