404 Не найдено при загрузке файлов nodejs - PullRequest
0 голосов
/ 19 мая 2018

Я использую пакет multer У меня есть два способа загрузки изображений на мой сервер, один - с помощью массива, а другой - с использованием полей.Единственное, что работает, это uploadArray для маршрута /status. Когда я загружаю на /update, это дает мне эту ошибку SyntaxError: Unexpected token < in JSON at position 0 .. Контроллер для /update точно такой же, какpostController.js единственное отличие в том, что я обновляю поля вместо сохранения нового.

/ utils / lib / account.js

const storage       = multer.memoryStorage();
        // These two image might be available in the req.files depending on what was sent
const upload        = multer({storage}).fields([{ name: 'photo', maxCount: 1 }, { name: 'cover', maxCount: 1 }]);
const uploadArray   = multer({storage}).array('image', 12);

    exports.upload = (req, res, next) => {
        upload(req, res, function (err) {
            if (err) {
              console.log(err);
            }
              next();
          });
    };


    exports.uploadArray = (req, res, next) => {
        uploadArray(req, res, function (err) {
            if(err){
                console.log(err);
            }
            next();
        });

    };

/ rout.js

router.route('/status')
  .all(helper.verifyToken)
  .all(helper.uploadArray)
  .get(status.get)
  .post(status.new) // file uploads
  .delete(status.delete);

router.route('/update')
  .all(helper.verifyToken)
  .all(helper.upload)
  .post(account.update_profile) // file uploads

Единственное, что здесь работает, это uploadArray /postController.js

  new: 
        (req, res) => {

            const uri = new DataUri();
            const promises = [];
            const images = [];
            //Get buffer from files
            for(let key in req.files){ 
              const obj = req.files[key];
              uri.format('.png', obj.buffer);
              let uriContent = uri.content;
              promises.push(uploadAsync(uriContent)); //upload each image
            }
            //Init upload
            function uploadAsync(buffer){
                return new Promise((resolve, reject) => {
                    cloudinary.v2.uploader.upload(buffer, function(error, result) {
                        if(error){
                            reject(error);
                        }
                        if(result.url){
                            images.push(result.url);
                            resolve(images);
                        }
                    });
                });
            }


            Promise.all(promises)
            .then(results => {
                  // Init post model
                  console.log('test1')
                    const post = new Post({
                         post_img: images,
                         post_description: req.body.description,
                         post_by: req.body.id,
                         photoURL: req.body.id,
                         post_comments: []
                     });
                  // Save data
                    post.save(function(err) {
                         if(err) {
                            res.send(err);
                         } 
                        var leanObject = post.toObject(); // Transform instance to plain JS Object for modification
                        // Modifications
                        leanObject['post_by'] = {
                            _id: leanObject['post_by'],
                            display_name: req.body.user, // Add current user display name
                            photo_url: req.body.user_photo
                        };

                        res.json({message: 'Success', type: 'success', code: 200, data: leanObject});
                     });
              })
              .catch(err => {
                  console.log(err);
              });
        },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...