node.js - 通过管道发送多个文件

标签 node.js express

我们正在使用 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 获取文件列表)

最佳答案

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

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

关于node.js - 通过管道发送多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30923010/

相关文章:

node.js - 使用 express 和 body-parser 解析 DELETE 请求时 body 为空

json - 使用 node.js 将嵌套的 json 转换为 csv

node.js - 使用同时在浏览器和 Node.JS 上运行的 TypeScript 编写 WebSocket 客户端

javascript - 需要有关 Node.js 路由器的帮助

javascript - Node/ express : Error: Failed to lookup view "error" in views directory

node.js - jQuery slider 在 angularjs 中不起作用

javascript - Nodejs服务器发送另一个对象到客户端

node.js - multer-s3-transform 文件上传不工作

javascript - 将 HTML 字符串发送到服务器,然后我可以使用 DOM 与其交互吗?可以在上面使用 jQuery 吗?

javascript - Node 和 Socket.IO - 私有(private)聊天(一对一)