首頁  >  文章  >  web前端  >  在nodejs中如何實作大檔案讀取

在nodejs中如何實作大檔案讀取

亚连
亚连原創
2018-06-21 17:04:302211瀏覽

這篇文章主要為大家詳細介紹了nodejs實現大文件的讀取,比如在線視頻,具有一定的參考價值,感興趣的小伙伴們可以參考一下

nodejs進行視頻讀取時不能像讀取圖片之類的一次性讀取,而是必須讀取一部分返回一部分,這樣客戶端的播放才會邊緩衝邊播放,而不必等待全部緩衝完再播放。

老規矩,直接貼程式碼講解:

var fs = require('fs'); 

function readBigFileEntry(filename, response) { 
path.exists(filename, function(exists) { 
if (!filename || !exists) { 
response.writeHead(404); 
response.end(); 
return; 
} 

var readStream = fs.ReadStream(filename); 

var contentType = 'none'; 
var ext = path.extname(filename); 
switch (ext) { 
case ".flv": 
contentType = "video/flv"; 
break; 
} 

response.writeHead(200, { 
'Content-Type' : contentType, 
'Accept-Ranges' : 'bytes', 
'Server' : 'Microsoft-IIS/7.5', 
'X-Powered-By' : 'ASP.NET' 
}); 



readStream.on('close', function() { 
response.end(); 
console.log("Stream finished."); 
}); 
readStream.pipe(response); 
}); 
}

透過fs模組的ReadStream方法,拿到視訊串流,然後綁定關閉事件:當串流讀取到結尾的時候結束response請求,最後透過pipe方法進行小塊小塊的讀取。這裡的head資訊不能加入Content-Length屬性,因為必須分段讀取,如果加了這個屬性,瀏覽器就會以為請求結束了從而關閉請求。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

在javascript中如何實作循環廣告條

在微信小程中如何使用swiper元件實作圖片切換顯示

在javascript中如何實作循環廣告條

#在Vue中有關偵錯工具vue-devtools(詳細教學)

#使用Vue如何實現整合Iframe頁面

#

以上是在nodejs中如何實作大檔案讀取的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn