一,后端接口
var express = require('express');
var router = express.Router();
const pathLib = require('path')
const fs = require('fs')
const db = require('../config.js')
// 获取附件列表数据
router.get('/download', function (req, res) {
// console.log(req.query.url,req.query.name,'1111');
var a=req.query.url
// //使用path模块对客户端请求下载的文件路径进行拼接
// //__dirname:全局属性,代表的是当前文件的绝对路径
console.log(a);
let filePath = pathLib.join(__dirname, `../${a}`)
var stats = fs.statSync(filePath);//fs.statSync接收一个绝对路径
if (stats.isFile()) {//如果是文件则返回true,否则返回false;
res.set({
'Content-Type': 'application/msword',
'Content-Disposition': 'attachment; filename=' + encodeURIComponent(req.query.name),//传入被下载后的文件名称,对应文件上传时的名字
});
fs.createReadStream(filePath).pipe(res); //createReadStream是返回一个读取流, pipe是将两个数据流连接起来
} else {
res.end(404);
}
})
module.exports = router;
二,前端请求传参
// 下载文件
download(row) {
window.location.href = `/api/download?url=${ row.url }&name=${encodeURIComponent(row.name)}`;
},