404上传文件nodejs时找不到

时间:2018-05-19 08:46:44

标签: node.js file express multer

我正在使用multer package 我有两种方法将图像上传到我的服务器,一种是使用Array,另一种是使用字段。 唯一可行的是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();
        });

    };

/routes.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);
              });
        },

0 个答案:

没有答案