3

我正在尝试支持将多个文件从我的 Node js 服务器下载到客户端。通过在我的 NodeJS 服务器中实现以下逻辑,我可以支持将单个文件发送到客户端。

res.download('group_documents/sample1.pdf','sample1.pdf', function(err){
  if (err) {
    console.log(err);
  } else {
    // decrement a download credit etc
  }
});

如何重写上述服务器逻辑以支持使用来自客户端的单个请求(浏览器或 curl 请求)下载多个文件?

4

2 回答 2

7

在网络浏览器上,您不能一次下载多个文件。但是您可以下载所有必需文件的存档文件。使用express-zip npm 包,您可以轻松完成。

https://github.com/thrackle/express-zip

安装快速压缩包。

npm install express-zip

使用以下代码:

res.zip(files);

files 是一个对象数组。每个对象应该是:

{ path : 'path/to/file', name : 'fileName'}
于 2017-02-27T11:48:18.850 回答
0

如果您的目标客户端是 Web 浏览器,那么您不能,因为 http 协议不允许单个请求进行多次下载。

如果您真的需要这样做,那么您需要编写一个自定义客户端应用程序,或者(更简单地)在传输文件之前将文件压缩到某个存档中。

于 2013-04-25T12:45:51.177 回答