久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

基于nodejs如何實現http傳輸大文件?(實踐方法分享)

基于node如何實現http傳輸大文件?下面本篇文章給大家介紹一下基于nodejs的幾種http文件傳輸實踐方案,希望對大家有所幫助!

基于nodejs如何實現http傳輸大文件?(實踐方法分享)

基于nodejs的http文件傳輸方案在現階段的前后端全棧開發中有都很重要的作用,本文我將通過幾種方案實現http傳輸大文件。在實現功能之前,我們先通過nodejs的fs模塊寫入一個大文件,并在項目中生成一個本地文件:

const fs = require('fs'); const writeStream = fs.createWriteStream(__dirname + "/file.txt"); for(let i = 0;i <= 100000; i++) {   writeStream.write(`${i} —— 我是${i}號文件n`, "utf-8"); } writeStream.end();

基于nodejs如何實現http傳輸大文件?(實踐方法分享)

以上代碼成功運行后,在當前的執行目錄下將會生成一個大小為 3.2MB 大小的文本文件,該文件將作為以下方案的 “大文件素材”。在列出大文件傳輸方案之前,我們先封裝后面即將用到的兩個公共方法: 文件讀取方法文件壓縮方法

// 封裝讀取文件的方法 const readFile = async (paramsData) => {   return new Promise((resolve, reject) => {     fs.readFile(paramsData, (err, data) => {       if(err) {         reject('文件讀取錯誤');       } else {         resolve(data);       }     })   }) }  // 封裝文件壓縮方法 const gzip = async (paramsData) => {   return new Promise((resolve, reject) => {     zlib.gzip(paramsData, (err, result) => {       if(err) {         reject('文件壓縮錯誤');       } else {         resolve(result);       }     })   }) }

1. 通過大文件在數據壓縮后傳輸

瀏覽器在發送請求時,都會攜帶 acceptaccept-* 請求頭信息,用于告訴服務器當前瀏覽器所支持的文件類型、支持的壓縮格式列表和支持的語言。請求頭中的 Accept-Encoding 字段,用于將客戶端能夠理解的內容編碼方式(通常是某種壓縮算法)告訴給服務端。服務端會選擇一個客戶端所支持的方式,并通過響應頭 Content-Encoding 來通知客戶端該選擇,響應頭告訴瀏覽器返回的 JS 腳本,是經過 gzip 壓縮算法處理過的

// 請求頭 accept-encoding: gzip, deflate, br
// 響應頭 cache-control: max-age=2592000  content-encoding: gzip  content-type: application/x-javascript

基于 Accept-EncodingContent-Encoding 字段的了解,我們來驗證一下未開啟 gzip 和開啟 gzip 的效果。

// 實現一個簡單的文件讀取服務器(沒有開啟gzip) const server = http.createServer(async (req, res) => {   res.writeHead(200, {     "Content-Type": "text/plain;charset=utf-8",   });   const buffer = await readFile(__dirname + '/file.txt');   res.write(buffer);   res.end(); }) server.listen(3000, () => {   console.log(`server啟動成功`) })

基于nodejs如何實現http傳輸大文件?(實踐方法分享)

// 實現一個簡單的文件讀取服務器(開啟gzip) const server = http.createServer(async(req, res) => {   res.writeHead(200, {     "Content-Type": "text/plain;charset=utf-8",     "Content-Encoding": "gzip"   });   const buffer = await readFile(__dirname + '/file.txt');   const gzipData = await gzip(buffer);   res.write(gzipData);   res.end(); }) server.listen(3000, () => {   console.log(`server啟動成功`) })

基于nodejs如何實現http傳輸大文件?(實踐方法分享)

2. 通過數據分塊傳輸

有場景需要用從數據庫中查詢獲得的數據生成一個大的 HTML 表格的時候,或者需要傳輸大量的圖片的時候,可以通過分塊傳輸實現。

Transfer-Encoding: chunked Transfer-Encoding: gzip, chunked

響應頭 Transfer-Encoding 字段的值為 chunked,表示數據以一系列分塊的形式進行發送。需要注意的是 Transfer-EncodingContent-Length 這兩個字段是互斥的,也就是說響應報文中這兩個字段不能同時出現。

// 數據分塊傳輸 const spilitChunks = async () =>{   const buffer = await readFile(__dirname + '/file.txt');   const lines = buffer.toString('utf-8').split('n');   let [chunks, i, n] = [[], 0, lines.length];   while(i < n) {     chunks.push(lines.slice(i, i+= 10));   };   return chunks; } const server = http.createServer(async(req, res) => {   res.writeHead(200, {     "Content-Type": "text/plain;charset=utf-8",     "Transfer-Encoding": "chunked",     "Access-Control-Allow-Origin": "*",   });   const chunks = await spilitChunks();   for(let i =0; i< chunks.length; i++) {     setTimeout(() => {       let content = chunks[i].join("&");       res.write(`${content.length.toString(16)}rn${content}rn`);     }, i * 1000);   }   setTimeout(() => {     res.end();   }, chunks.length * 1000); }) server.listen(3000, () => {   console.log(`server啟動成功`) })

3. 通過數據流的形式傳輸

當使用 Node.js 向客戶端返回大文件時,使用流的形式來返回文件流能避免處理大文件時,占用過多的內存。具體實現方式如下所示。當使用流的形式來返回文件數據時,HTTP 響應頭 Transfer-Encoding 字段的值為 chunked,表示數據以一系列分塊的形式進行發送。

const server = http.createServer((req, res) => {   res.writeHead(200, {     "Content-Type": "text/plain;charset=utf-8",     "Content-Encoding": "gzip",     "Transfer-Encoding": "chunked"   });   fs.createReadStream(__dirname + "/file.txt")     .setEncoding("utf-8")     .pipe(zlib.createGzip())     .pipe(res); })  server.listen(3000, () => {   console.log(`server啟動成功`) })

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日本韩国欧美超级黄在线观看| 视频一区二区三区入口| 亚洲毛片在线| 丝袜美腿亚洲一区| 亚洲欧美不卡| 蜜桃久久精品一区二区| 久久亚洲图片| 视频一区日韩精品| 日韩精品中文字幕吗一区二区 | 中文字幕日韩欧美精品高清在线| 国产一区成人| 日韩中文字幕不卡| 亚洲精品国产精品粉嫩| 日韩专区在线视频| 日韩美女国产精品| 麻豆精品视频在线观看视频| 国产精品伦理久久久久久| 日产精品一区| 亚洲小说欧美另类婷婷| 在线亚洲精品| 日韩精品乱码av一区二区| 欧美在线不卡| 精品视频高潮| 日韩不卡免费高清视频| 日韩天堂av| 日本成人中文字幕在线视频| 国产精品乱战久久久| 首页国产精品| 久久国产欧美| 亚洲一区二区日韩| 国产精品v一区二区三区| 日韩福利一区| 视频一区在线视频| 97久久亚洲| 精品国产乱码久久久| 亚洲二区视频| 免费成人在线影院| 久久99精品久久久野外观看| av综合电影网站| 美女亚洲一区| 91精品丝袜国产高跟在线| 福利片在线一区二区| 偷拍欧美精品| 日韩av影院| 成人三级高清视频在线看| 亚洲精品午夜av福利久久蜜桃| 日韩二区三区在线观看| 成人在线免费观看91| 性一交一乱一区二区洋洋av| 国产日韩一区二区三区在线| 久久av在线| 国产一区精品福利| 欧美专区一区二区三区| 国产高清精品二区| 欧美成人国产| 国产福利一区二区精品秒拍 | 久久久精品网| 日韩中文一区二区| 欧洲一级精品| 国产调教精品| 狠狠干综合网| 久久精品国产久精国产爱| 首页欧美精品中文字幕| 色婷婷色综合| 日韩欧美激情| 久久人人99| 国产美女视频一区二区| 亚洲精品888| 美腿丝袜亚洲一区| 视频在线在亚洲| 98精品久久久久久久| 日韩激情中文字幕| 亚洲精品一区二区妖精| 老色鬼精品视频在线观看播放| 亚洲欧美日韩精品一区二区| 久久久久久色| 伊人久久成人| 精品国产99| 日本不卡在线视频| 免费不卡中文字幕在线| 老司机精品在线| 日韩精品五月天| 亚洲精品在线观看91| 精品国产精品国产偷麻豆| 婷婷五月色综合香五月| 亚洲一级高清| 国产美女高潮在线观看| 国产亚洲第一伦理第一区| 蘑菇福利视频一区播放| 亚洲91精品| 高潮一区二区| 久久久精品国产**网站| 青草国产精品久久久久久| 国产精品腿扒开做爽爽爽挤奶网站| 成人日韩精品| 久久久久久婷| 久久久91麻豆精品国产一区| 欧美亚洲三区| 亚洲日本三级| 日韩中文欧美在线| 欧美精品一卡| 欧美成人日韩| 999国产精品999久久久久久| 黄色精品视频| 久久精品资源| 欧美黑人巨大videos精品| 91九色综合| 日韩不卡一区二区三区| 亚洲69av| 日韩在线黄色| 日韩精品视频在线看| 日韩美女国产精品| 日韩综合一区二区| 爽好久久久欧美精品| 在线综合亚洲| 国产精品日韩欧美一区| 伊人久久亚洲影院| 亚洲精华国产欧美| 国产aa精品| 91av亚洲| 99久久久久国产精品| 亚洲午夜黄色| 影音国产精品| 亚洲激精日韩激精欧美精品| 亚洲激情中文在线| 亚洲免费网址| 亚洲日本免费电影| 日韩二区三区四区| 91久久精品无嫩草影院| 日韩av网站在线观看| 欧美一级网站| 国产精品高清一区二区| 国产精品成人**免费视频| 国产精品日本一区二区三区在线 | 激情综合五月| 韩国久久久久久| 久久精品亚洲欧美日韩精品中文字幕| 天堂а√在线最新版中文在线| 日本精品影院| 日韩视频一区二区三区在线播放免费观看 | 国产精品午夜一区二区三区| 久久狠狠久久| 精品一区二区三区亚洲| а√天堂8资源在线| 日韩精品首页| 国产亚洲亚洲| 亚洲精品进入| 国产极品久久久久久久久波多结野| 美女av一区| 欧洲av不卡| 国产麻豆综合| 欧美亚洲二区| 大香伊人久久精品一区二区 | 欧美精选一区二区三区| 亚洲视频电影在线| 国产精品va| 91tv亚洲精品香蕉国产一区| 亚洲一区二区三区高清| 日韩精品1区2区3区| 久久av综合| 神马日本精品| 一区二区三区四区日韩| 国产精品久久久久久久久免费高清| 欧美www视频在线观看| 婷婷中文字幕一区| 亚欧成人精品| 国产一区丝袜| 99热精品在线观看| 国产欧美一区二区三区米奇 | 久久97视频| 欧美1区免费| 日韩欧美中文字幕一区二区三区 | 99tv成人| 日韩高清不卡一区| 麻豆传媒一区二区三区| 黑丝美女一区二区| 欧美在线黄色| 99视频精品全部免费在线视频| 亚洲精品麻豆| 日本不良网站在线观看| 亚洲专区视频| 国产在线看片免费视频在线观看| 天堂av在线一区| 精品午夜视频| 欧美专区在线| 精品亚洲免a| 丝袜脚交一区二区| 精品免费视频| 日韩制服丝袜先锋影音| 欧美a一区二区| 国产精品日本| 久久亚州av| 免费美女久久99| av最新在线| 日韩精品免费观看视频| 久久亚洲成人| 精品午夜久久| 日本亚洲视频| 欧美日韩激情在线一区二区三区| 国产精品分类|