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

创建一个简单的 node.js 静态服务器

node常用依赖混剪

express构建node服务器怎么访问目录下的文件

Node.js Express js在较大文件上提供静态文件的速度非常慢

node——通过express模拟Apache实现静态资源托管