Node.js 从NodeJS返回文件数组

Node.js 从NodeJS返回文件数组,node.js,Node.js,我一直在使用res.sendFile为使用nodej的文件提供服务,例如 res.sendFile(path.resolve(fullpath)) 但我想返回一个相同的数组。 差不多 res.sendFile([path.resolve(fullpath),path.resolve(fullpath)]) 但这会返回一个错误 如何返回文件数组?res.sendFile获取单个字符串作为参数。不管你做什么,你都不能给它传递数组 您可以做的是预先构建阵列,并使用来分别发送每个文件: paths

我一直在使用res.sendFile为使用nodej的文件提供服务,例如

res.sendFile(path.resolve(fullpath))
但我想返回一个相同的数组。 差不多

res.sendFile([path.resolve(fullpath),path.resolve(fullpath)])
但这会返回一个错误


如何返回文件数组?

res.sendFile
获取单个字符串作为参数。不管你做什么,你都不能给它传递数组

您可以做的是预先构建阵列,并使用来分别发送每个文件:

paths = [path.resolve(fullpath1),path.resolve(fullpath2)];
paths.forEach( path => res.sendFile(path) );

如果目标客户机是web浏览器,则不能下载多个文件,因为http协议不允许这样做。您可以做的是压缩文件并将其发送回客户端

你可以用

以下示例来自文档:

var app = require('express')();
var zip = require('express-zip');

app.get('/', function(req, res) {
  res.zip([
    { path: '/path/to/file1.name', name: '/path/in/zip/file1.name' }
    { path: '/path/to/file2.name', name: 'file2.name' }
  ]);
});

app.listen(3000);

这是不可能的。你可以做的是创建一个档案,然后传输档案。当使用这个时,我只看到一个文件通过邮递员@当然,如果你有三支枪,你会在最后分别发送每个文件。正如我所说,使用
res.sendfile
无法发送多个原始文件。您可以使用forEach on path数组逐个发送它们,也可以使用另一个建议的答案—压缩它们并将其压缩发送。您必须在客户端进行更改,这样才能获取zip文件并对其进行解压缩。zip文件不是一个选项,移动后端使用它接收HTML页面,然后进行渲染。我可以将其作为JSON数组发送,然后进行渲染,但这并不理想。