【问题标题】:Send all image files from node.js to frontend将所有图像文件从 node.js 发送到前端
【发布时间】:2018-06-25 11:01:10
【问题描述】:

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

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 服务器请求图像链接。我不知道这是否是个好主意。

【问题讨论】:

    标签: javascript node.js reactjs express


    【解决方案1】:

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

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

    【讨论】:

    • 所以基本上我会使用两个 API,第一个用于获取文件名列表,另一个用于逐个获取这些图像?
    • 如果用户上传了 1000 个文件,那么 json 文件名列表将包含所有 1000 个文件名。那不是会让json太大吗?
    【解决方案2】:

    你不能一次发送多个文件,如果你想发送用户的所有图像,你应该发送一个包含他所有图像的 json 数组,并在前端一个一个地获取它们。

    【讨论】:

    • 所以基本上我会使用两个 API,第一个用于获取文件名列表,另一个用于逐个获取这些图像?
    • 是的,正是:)
    • 如果用户上传了 1000 个文件,那么 json 文件名列表将包含所有 1000 个文件名。那不是会让json太大吗?
    • 如果用户上传了1000个文件,你应该使用分页。
    猜你喜欢
    • 2020-11-20
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 2019-03-17
    • 2018-11-02
    相关资源
    最近更新 更多