亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使 fs writeFile 更快地寫入圖像?

如何使 fs writeFile 更快地寫入圖像?

翻翻過去那場雪 2023-07-29 15:46:55
我怎樣才能讓它更快?我正在使用節點和 fs 庫。這是發送 jpg 圖像的 fs.Readable 流的 POST 請求的端點。代碼開始停留在 800 kB 左右。最終,我希望能夠保存視頻。理想情況下,我希望它花費的時間少于十秒。  var bufs = [];  readStream.on('data', function(d){ bufs.push(d); });  readStream.on('end', function(){  var buf = Buffer.concat(bufs);  console.log(buf);  fs.writeFile("test.jpg", buf, ()=>{console.log('hi')});  });
查看完整描述

1 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

一種更簡單的方法,也使用更少的內存并并行化寫入(在塊到達時寫入塊)并且應該更快一點,那就是將流直接通過管道傳輸到輸出文件。


readStream.pipe(fs.createWriteStream("test.jpg"));

readStream.on('close', () => {

    console.log("all done now");

});

或者,通過更好的錯誤處理,可以捕獲兩個流上的錯誤并告訴您一切何時完成:


const { pipeline } = require('stream');


pipeline(readStream, fs.createWriteStream("test.jpg"), err => {

    if (err) {

        console.log(err);

    } else {

        console.log("all done");

    }

});

或者,使用 Promise 和pipeline():


const pipeline = util.promisify(require('stream').pipeline);


pipeline(readStream, fs.createWriteStream("test.jpg")).then(() => {

   console.log("all done");

}).catch(err => {

   console.log(err);

});


查看完整回答
反對 回復 2023-07-29
  • 1 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號