Приложение Node / Express / MongoDB: загрузка нескольких изображений с помощью Multer и Cloudinary - PullRequest
0 голосов
/ 17 сентября 2018

надеюсь, кто-то может мне помочь с этим:

Я работаю над приложением Node / Express / Mongo CRUD, где каждый пост / документ имеет ОДНО изображение. Я использую multer и cloudinary для загрузки изображений. Однако я хочу, чтобы пользователи могли загружать несколько изображений в каждое сообщение. В идеале, URL-адреса / пути и идентификаторы изображений должны храниться в массивах в моей базе данных.

Я уже несколько часов пытаюсь и исследую, но, похоже, не могу заставить его работать, и там нет учебника, объясняющего, как можно решить эту (простую) задачу, используя multer и cloudinary.

Это код, который я использую для загрузки ОДНОГО изображения в сообщение, которое работает:

// CREATE Route - add new post to DB
router.post("/", middleware.isLoggedIn, upload.single('image'), function(req, res) {
        cloudinary.v2.uploader.upload(req.file.path, function(err, result) {
            if(err) {
                req.flash('error', err.message);
                return res.redirect('back');
              };

// add cloudinary url for the image to the post object under image property

      req.body.post.image = result.secure_url;

// add image's public_id to post object

      req.body.post.imageId = result.public_id;

// add author to post

      req.body.post.author = {
        id: req.user._id,
        username: req.user.username
      }

Post.create(req.body.post, function(err, post) {
        if (err) {
          req.flash('error', err.message);
          return res.redirect('back');
        }
        res.redirect('/posts/' + post.id);
      });
    });
});

Как мне нужно изменить этот код для достижения этой цели? Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 18 сентября 2018

API загрузки в настоящее время поддерживает загрузку только одного файла за раз, он имеет высокую скорость параллелизма (около 40-50 одновременных вызовов), поэтому вы можете использовать многопоточность для загрузки множества файлов одновременно. Вы также можете использовать асинхронные вызовы и указать Cloudinary выполнить загрузку в фоновом режиме, добавив параметр async и установив его в true.

...