不多说什么,直接上代码
var express = require('express');
var fs = require('fs')
var path= require('path');
var cors = require('cors');
var app = express();
app.use(cors());
var options = {
dotfiles: 'ignore',
etag: false,
extensions: ['htm', 'html'],
index: false,
maxAge: '1d',
redirect: false,
setHeaders: function (res, path, stat) {
res.set('x-timestamp', Date.now())
}
}
app.use(express.static('public', options));
app.get('/download',function(req, res, next){
var currDir = path.normalize(req.query.dir),
fileName = req.query.name,
currFile = path.join(currDir,fileName),
fReadStream;
console.log(currDir );
console.log(fileName );
fs.exists(currFile,function(exist) {
if(exist){
res.set({
"Content-type":"application/octet-stream",
"Content-Disposition":"attachment;filename="+encodeURI(fileName)
});
fReadStream = fs.createReadStream(currFile);
fReadStream.on("data",function(chunk){res.write(chunk,"binary")});
fReadStream.on("end",function () {
res.end();
});
}else{
res.set("Content-type","text/html");
res.send("file not exist!");
res.end();
}
});
});
app.listen(8088, function(){
console.log('localhsot:8080')
});
使用方法:localhost:8080/download?dir='filedir'&name='filename',把这个直接放到a标签的href属性内就可以使用。
dir:文件路径
name:文件名称(带后缀)