Как отправить несколько изображений в запросе на получение API Expressjs с помощью sendFIle()

Я ищу возможность отправить несколько изображений в одном запросе GET с сервера Expressjs через API.

Я хочу создать галерею изображений каждого пользователя, загруженного изображениями в стек MEAN. Когда изображения загружаются с помощью multer, информация об изображении сохраняется в mongodb, включая идентификатор пользователя того, кто его загрузил.

Когда я использую angularjs, я хочу, чтобы у пользователя был доступ к любому из изображений, которые они ранее загрузили. В настоящее время я отправляю один файл по запросу 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');
        });
    });
};

person Jacob Green    schedule 27.03.2018    source источник


Ответы (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)
}

Обратите внимание, что обработка ошибок опущена.

person Francisco Mateo    schedule 27.03.2018