Problem:
如何從儲存在伺服器中的某個檔案中,透過存取Node.js 伺服器中的頁面將檔案下載到本機?
解決方案:
使用Express.js 提供的輔助函數可以簡化這個過程:
app.get('/download', function(req, res){ const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`; res.download(file); // Set disposition and send it. });
舊版解決方案:
為了讓瀏覽器辨識檔案名稱,需要使用其他HTTP頭指定更多資訊:
res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
還可以發送MIME 類型,例如:
res.setHeader('Content-type', 'video/quicktime');
以下是更詳細的範例程式碼:
var path = require('path'); var mime = require('mime'); var fs = require('fs'); app.get('/download', function(req, res){ var file = __dirname + '/upload-folder/dramaticpenguin.MOV'; var filename = path.basename(file); var mimetype = mime.getType(file); res.setHeader('Content-disposition', 'attachment; filename=' + filename); res.setHeader('Content-type', mimetype); var filestream = fs.createReadStream(file); filestream.pipe(res); });
請請注意,此範例程式碼使用了流來讀取文件,這是Node.js 中首選的非同步方法。
以上是如何使用 Express.js 從 Node.js 伺服器下載檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!