沿管道发送多个文件

iLe*_*ing 5 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');
}
Run Code Online (Sandbox Code Playgroud)

我想做更像的事情:

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));
     })
   }

}
Run Code Online (Sandbox Code Playgroud)

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

msc*_*dex 5

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

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