簡體   English   中英

從s3 w / nodejs&knox保存傳入的文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM