Node.js是一個開源、跨平台的JavaScript執行環境,可以讓JavaScript程式碼在服務端運作。在Node.js中,我們可以輕鬆透過http模組來建立一個簡單的http伺服器,並且可以透過讀取本機檔案來實現檔案下載功能。本文將介紹如何用Node.js實作http檔下載。
使用Node.js的http模組可以非常容易地建立http伺服器,程式碼如下:
const http = require('http'); const server = http.createServer((req, res) => { console.log('Request received'); }); server.listen(3000, () => { console.log('Server started on port 3000'); });
這段程式碼創建了一個http伺服器,該伺服器在連接埠3000上監聽請求。當伺服器收到任何請求時,都會在控制台上輸出'Request received'。
要實現檔案下載的功能,我們需要在請求處理程序中取得請求的URL,並根據請求的URL來決定要下載的文件。程式碼如下:
const http = require('http'); const fs = require('fs'); const server = http.createServer((req, res) => { console.log('Request received'); const fileUrl = req.url.slice(1); const filePath = `./${fileUrl}`; fs.stat(filePath, (err, stats) => { if (err) { res.statusCode = 404; res.end('File not found'); return; } fs.readFile(filePath, (err, data) => { if (err) { res.statusCode = 500; res.end('Error reading file'); return; } res.setHeader('Content-Disposition', `attachment; filename=${fileUrl}`); res.setHeader('Content-Type', 'application/octet-stream'); res.setHeader('Content-Length', stats.size); res.end(data); }); }); }); server.listen(3000, () => { console.log('Server started on port 3000'); });
在這段程式碼中,我們從請求的URL中取得檔案名,並根據檔案名稱確定檔案路徑。接著,我們使用fs模組的stat方法檢查檔案是否存在。如果檔案不存在,我們向客戶端發送404回應並傳回'File not found'訊息。如果檔案存在但讀取檔案內容時發生錯誤,我們向客戶端發送500回應並傳回'Error reading file'訊息。如果一切正常,我們設定回應頭資訊並將文件內容傳送給客戶端。
我們可以在瀏覽器中輸入'http://localhost:3000/file.txt',其中file.txt是要下載的文件名。如果檔案存在,伺服器將會下載該檔案。
總結
在這篇文章中,我們介紹如何透過Node.js實作http檔下載。我們創建了一個http伺服器來處理客戶端請求,並透過fs模組讀取本機檔案並將其作為回應內容傳送給客戶端。這個例子提供了一個非常簡單的方式來向客戶端提供文件下載功能,但是在實踐中,我們可能要考慮實現更切實可行的下載管理,例如文件大小限制、下載速度限制、驗證文件是否為合法文件等。
以上是nodejs實作http檔下載的詳細內容。更多資訊請關注PHP中文網其他相關文章!