1. 程式人生 > >node+express+static完成簡單的文件下載

node+express+static完成簡單的文件下載

什麽 type node down res not logs var join

不多說什麽,直接上代碼

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完成簡單的文件下載