将所有图像文件从node.js发送到前端

时间:2018-06-25 11:01:10

标签: javascript node.js reactjs express

如何将所有图像文件从后端nodejs服务器文件夹发送到Reactjs客户端?我创建了一个网站上传网站,每个用户都可以登录并上传他们的文件。因此,无论何时用户登录,我都希望他/她上传的所有文件在网站上可见。
res.sendFile没有帮助。我发现它不会一次发送多个文件。 到目前为止,它只发送一个在客户端可见的单个文件(控制台日志显示所有文件)。

Nodejs:

    function getFiles (dir, files_){
    files_ = files_ || [];
    var files = fs.readdirSync(dir);
    for (var i in files){
        var name = dir + '/' + files[i];
        if (fs.statSync(name).isDirectory()){
            getFiles(name, files_);
        } else {
            files_.push(name);
        }
    }
    return files_;
    }

  app.get('/loadit', verifyToken, (req, res) => {
  var loadFiles = getFiles(__dirname + /data/);
   jwt.verify(req.token, 'secretkey', (err, decoded) => {
    if(err) {
      res.sendStatus(403);
    } else {
        loadFiles.map((data1) => { 
          console.log(data1);
          return res.sendFile(data1)
      })
    }
  })
});

执行相同任务是否有其他方法?我还考虑过将所有图像链接作为json列表发送到前端(reactjs),然后从我的nodejs服务器请求图像链接。我根本不知道这是个好主意。

2 个答案:

答案 0 :(得分:1)

您可以在服务器上即时生成一个存档文件(如zip),以下载所有图像,例如与https://github.com/archiverjs/node-zip-stream一起制作包含所有图像的zip文件。

如果要显示所有图像,请添加API以获取文件名列表,并添加另一个以获取特定图像文件。

答案 1 :(得分:0)

您永远不能一次发送多个文件,如果要发送用户的所有图像,则应发送一个包含他所有图像的json数组,并在前端逐个获取它们。 / p>