如何从快递服务器向客户端发送多个图像文件?

时间:2019-05-28 12:59:42

标签: angular mongodb express gridfs loadimage

在我的后端(通过快速构建)中,我使用gridfs将用户映像存储在MongoDB中。现在出于测试目的,我想检查客户端中是否已加载所有图像。通过下面的这段代码,我能够获取一个图像:

// http://localhost:3000/avater/avatar1 (api call)
 app.get('/avater/:filename', (req, res) => {
      if (req.params) {
        gfs.files.findOne({ filename: req.params.filename }, (err, files) => {
          // Error checking
          if (!files || files.length === 0) {
            return res.status(404).json({
              responseCode: 1,
              responseMessage: 'error'
            });
          }

          var readstream = gfs.createReadStream({
            filename: files.filename
          });
          // set the proper content type
          res.set('Content-Type', files.contentType);
          // Return response
          return readstream.pipe(res);
        });
      } else {
        return res.status(404).json({ error: 'username is not corrent' });
      }
    });

现在我只想在浏览器上显示所有用户头像。我不知道如何将多个图像从gridfs发送到客户端。这就是我编写代码的方式。但是出现以下错误:

  

(节点:16704)MaxListenersExceededWarning:可能的事件发射器内存   检测到泄漏。添加了11个关闭的侦听器。使用generator.setMaxListeners()   增加限制

//  http://localhost:3000/allavater (api url)
 app.get('/allavater', (req, res) => {
      let count = 0;
      let filesData = [];
      gfs.files.find({  }).toArray((err, files) => {
        // Error checking
        if (!files || files.length === 0) {
          return res.status(404).json({
            responseCode: 1,
            responseMessage: 'error'
          });
        }
        // Loop through all the files and fetch the necessary information
        files.forEach(file => {
          filesData[count++] = {
            filename: file.filename,
            contentType: file.contentType
          };
        });
        return filesData.map(file => {
          var readstream = gfs.createReadStream({
            filename: file.filename
          });
          // set the proper content type
          res.set('Content-Type', file.contentType);
          // Return response
          return readstream.pipe(res);
        });
      });
    });

我如何将所有图像发送到浏览器将显示mongo中存储的所有图像的客户端?此外,还有为每个图像创建链接以便以后在Angular项目中显示它们的方法吗?

0 个答案:

没有答案