node
var http = require('http');
var express = require('express');
var fs=require("fs");
var app = express();
app.get('/download/*', function (req, res, next) {
//第一种方式
//var f="F:/ftproot/NW.js.docx";
//var f="f:/ftproot/我是中文的语言.txt"
var f = req.params[0];
//f = path.resolve(f);
//console.log('Download file: %s', f);
//res.download(f);
//第二种方式
var path="./1.jpg";
var f = fs.createReadStream(path);
res.writeHead(200, {
'Content-Type': 'application/force-download',
'Content-Disposition': 'attachment; filename=1.jpg'
});
f.pipe(res);
});
http.createServer(app).listen(3000);
前端代码:
var a = document.createElement("a");
a.type = "text/javascript";
a.href = "http://localhost:3000/download/121";
a.click();
如果是文件流
axios({
method: "get",
responseType: "blob",
url: "http://localhost:3000/download/121"
}).then(data => {
// 这里的返回值data应该是只包含二进制流文件的内容
const blob = new Blob([data], { type: "image/jpeg" });
let link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
link.download = "1.jpg";
link.click();
link.remove();
});