完整示例代碼參考Content-Disposition
Contents
Startup
mkdir node-download && cd node-download
npm init && cnpm i --save express
vim app.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000, function () {
console.log('服務(wù)啟動');
});
node app.js
curl localhost:3000
Node
vim app.js
var fs = require('fs');
var express = require('express');
var app = express();
app.get('/preview', function (req, res) {
var filename = 'image.jpg';
res.sendFile(filename, {
root: __dirname
});
});
app.get('/download', function (req, res) {
var filename = 'image.jpg';
res.download(filename);
});
app.get('/deleteAfterDownload', function (req, res) {
var filename = 'temp.jpg';
fs.writeFileSync(filename, fs.readFileSync('image.jpg'));
var stream = fs.createReadStream(filename);
stream.once("end", function () {
stream.destroy();
fs.unlinkSync(filename);
}).pipe(res);
});
app.listen(3000, function () {
console.log('服務(wù)啟動');
});
node app.js
HTTP
curl -I localhost:3000/download
# Content-Disposition: attachment; filename="image.jpg"
vim app.js
app.get('/deleteAfterDownload', function (req, res) {
var filename = 'temp.jpg';
fs.writeFileSync(filename, fs.readFileSync('image.jpg'));
var stream = fs.createReadStream(filename);
res.set('Content-Disposition', 'attachment; filename="temp.jpg"');
stream.once("end", function () {
stream.destroy();
fs.unlinkSync(filename);
}).pipe(res);
});
ndoe app.js
HTTP協(xié)議Content-Disposition響應(yīng)頭: inline(默認(rèn)值)表示在網(wǎng)頁中顯示 attachment表示下載至本地