iLemming
iLemming

Reputation: 36176

sending multiple files down the pipe

we're using express 4 and right now I have something like this:

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

and I wanna do something more like:

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

}

But that doesn't work. How can I serve multiple files with express? Note: not just all files in a directory (like in the example) - which probably can be done with app.use; express.static , but specific set of files (e.g. I may need to get the list of files from bower.json)

Upvotes: 6

Views: 7872

Answers (1)

mscdex
mscdex

Reputation: 106696

There is no way to send multiple files like that in a single response, unless you use your own special formatting (standard multipart or otherwise) and then parse that on the client side (e.g. via XHR).

Probably the easiest workaround would be to archive (zip, 7zip, tarball, etc.) the files and then serve that archive instead. This assumes however that you want the user to download it and not use the files in the browser (unless you have a zip, etc. parser in the browser and use XHR).

Upvotes: 8

Related Questions