node+express+static完成简单的文件下载
Posted fly叶落丶知秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node+express+static完成简单的文件下载相关的知识,希望对你有一定的参考价值。
不多说什么,直接上代码
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:文件名称(带后缀)
以上是关于node+express+static完成简单的文件下载的主要内容,如果未能解决你的问题,请参考以下文章
[Node.js] Serve Static Files with Express