[英]save incoming file from s3 w/nodejs & knox?
這可能是非常基本的,因為文檔將其排除在外......來自knox docs:
“下面是我們剛剛在s3推送的文件的示例GET請求,只是輸出響應狀態代碼,標題和正文。”
client.get('/test/Readme.md').on('response', function(res){
console.log(res.statusCode);
console.log(res.headers);
res.setEncoding('utf8');
res.on('data', function(chunk){
console.log(chunk);
});
}).end();
很簡單,但如何將傳入的數據保存為本地文件? 新的BufferList()還是什么?
我正在嘗試構建一個“動態”圖像大小調整服務,從s3或cloudfront加載圖像並根據請求返回大小。 然后瀏覽器直接從s3緩存大小的圖像而不是完整的圖像。 當然,我需要先將這個基本位工作! 有任何想法嗎?
多謝你們!
它看起來不像knox支持流API,所以你不能使用stream.pipe()並獲得適當的背壓。 但是,您的磁盤可能比S3快,所以這可能無關緊要。
在“響應”回調中,使用var outstream = fs.createWriteStream(filename);
從文件系統模塊打開可寫流var outstream = fs.createWriteStream(filename);
。 在“data”回調中,調用outstream.write(chunk);
希望有一個“結束”回調你可以使用關閉寫流。
作為上面回答的替代方法,您可以將傳入的文件保存到緩沖區,如下所示:
var buffer = '';
client.get('/test/Readme.md').on('response', function(res){
res.setEncoding('utf8');
res.on('data', function(chunk){
buffer += chunk;
});
res.on('end', function(){
// do something with the buffer such as save it to file,
// or directly resize the image here.
// eg. save to file:
fs.writeFile('downloaded_readme.md', buffer, 'utf8', function (err) {
});
});
}).end();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.