现在express里有个文件名的bug, res.sendfile, res.download之类的都有, 不支持路径中有中文名称包括文件名 后端用mongodb存文件全路径,下载时只通过id传, 原来想直接传全文件路径比如C:\works\a.txt,后来发现不行,好象security限制住了,根本不会route到/download/:filename的处理,直接显示无法GET...
主要两个页面,一个Add file, 一个显示所有文件,点击任意一个即可下载
exports.down = function(req, res){
var MongoClient = require('mongodb').MongoClient;
var fs = require('fs');
var path = require('path');
var ObjectID = require('mongodb').ObjectID;
MongoClient.connect("mongodb://localhost:27017/filelist", function(err, db) {
if (!err) {
console.log("We are connected.");
}
var fileid = req.params.id;
var collection = db.collection('filelink');
collection.findOne({"_id": ObjectID(fileid)}, function(err, item) {
var filepath = item["file"];
var filebase = path.basename(filepath);
//console.log(filepath);
//console.log(filebase);
res.download(filepath,filebase);
});
});
};