【问题标题】:How to send multiple images in a Expressjs api get request with sendFIle()如何使用 sendFIle() 在 Expressjs api 获取请求中发送多个图像
【发布时间】:2018-09-06 04:19:40
【问题描述】:

我正在寻找通过 api 从 Expressjs 服务器的一个 GET 请求中发送多个图像。

我想为每个用户在 MEAN 堆栈中上传的图片创建一个图片库。使用multer上传图片时,图片信息会保存到mongodb,包括上传者的userid。

在使用 angularjs 时,我希望用户能够访问他们之前上传的任何图像。目前,我正在基于用户 ID 的 GET 请求发送一个文件。无论如何在一个json中发送多个文件。我目前正在使用 Expressjs 的 res.sendFile,但还没有找到任何关于发送多个返回的信息。

https://expressjs.com/en/api.html#res.sendFile

这是我当前的获取请求:

exports.getUpload = function(req, res) {
    Upload.find({createdby: req.params.Id}).exec(function(err, upload) {
        errorhandle.errorconsole(err, 'file found');
        console.log(upload[0]);
        var options = {
            root: '/usr/src/app/server/public/uploads/images'
        };
        var name = "" + upload[0].storedname +"";
        console.log(name);
        res.sendFile(name, options,function(err) {
            errorhandle.errorconsole(err, 'file sent');
        });
    });
};

【问题讨论】:

    标签: api express mean-stack sendfile


    【解决方案1】:

    你不能用res.sendFile。事实上,我认为你根本做不到。可能是HTTP/2 Server Push ,但我不确定。

    您可以做的是发送一个 JSON 响应,其中包含指向所有图像的链接:

    exports.getUpload = async (req, res) => {
        const uploads = await Upload.find({ createdby: req.params.Id }).exec()
        const response = uploads.map(image => {name: `https://example.com/uploads/images/${image.storedname}`})
        res.json(response)
    }
    

    注意错误处理省略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-22
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 2019-02-13
      • 2017-03-20
      相关资源
      最近更新 更多