沿管道发送多个文件

时间:2015-06-18 18:28:06

标签: node.js express

我们正在使用快递4,现在我有类似的东西:

var express = require('express'),
    router = express.Router();

router.get('/local_modules/*', function (req, res, next) {
   var moduleName = req.url.match(/local_modules\/(.*?)\//).pop(1)
   res.sendFile(filePath + '.js');
}

我想做更多的事情:

router.get('/local_modules/*', function (req, res, next) {
   var moduleDir = req.url.match(/local_modules\/(.*?)\//).pop(1)

   fs.readdir(moduleDir, function(err, files) { 
     files.forEach(function(f) {
         res.sendFile(path.join(moduleDir, f));
     })
   }

}

但这不起作用。如何使用express提供多个文件?注意:不仅是目录中的所有文件(如示例中所示) - 可能可以使用app.use; express.static完成,但具体的文件集(例如,我可能需要从bower.json获取文件列表)< / p>

1 个答案:

答案 0 :(得分:5)

除非您使用自己的特殊格式(标准多部分或其他格式),然后在客户端解析(例如通过XHR),否则无法在单个响应中发送多个这样的文件。

最简单的解决方法可能是归档(zip,7zip,tarball等)文件,然后提供该归档文件。但是,假设您希望用户下载它而不是在浏览器中使用这些文件(除非您在浏览器中使用zip等解析器并使用XHR)。