使用Node.js编辑页面图像上传概念

时间:2019-03-06 07:11:57

标签: javascript node.js image express file-upload

Nodejs的新手,在我的项目中,我试图上传Edit page中的图像。

这里使用了两个条件,这些条件是:

  1. 如果用户选择图像文件意味着
  2. 未选择
  

如果用户选择图像文件新图像upload并将其保存在我的database.

     

否则保存不包含upload file的old_image数据。

这是我的代码:

router.post('/edit_coupon/:id', verifyToken, function(req, res, next){
    let update_coupon = {};
    var file = req.files.image;
    if(Object.keys(req.files).length != 0) // if user select file
    {
        var random = Math.floor(Math.random() * (999999 - 100000 + 1)) + 100000;
        const image_name = random+file.name;
        file.mv('public/assets/images/coupons/'+image_name, function(err){
            if (err)
            {
                return res.status(500).send(err);
            }
        });
        update_coupon.image = image_name;
    }
    else
    {
        update_coupon.image = req.body.old_image;  // if user didnot select file
    }

    // code for update 
    ...
    ...
    ...

});

当用户未选择显示错误的图片时,我的上述代码不起作用 喜欢

  

TypeError:无法将未定义或null转换为对象       在Function.keys()

1 个答案:

答案 0 :(得分:1)

使用req.files语句和if运算符检查typeof是否可用,并且它是一种对象,如下所示:

router.post('/edit_coupon/:id', verifyToken, function(req, res, next){
    let update_coupon = {};
    var file = req.files.image;
    if(req.files != null && typeof req.files == 'object') {
     if(Object.keys(req.files).length != 0) // if user select file
     {
        var random = Math.floor(Math.random() * (999999 - 100000 + 1)) + 100000;
        const image_name = random+file.name;
        file.mv('public/assets/images/coupons/'+image_name, function(err){
            if (err)
            {
                return res.status(500).send(err);
            }
        });
        update_coupon.image = image_name;
    }
    else
    {
        update_coupon.image = req.body.old_image;  // if user didnot select file
    }

   }

    // code for update 
    ...
    ...
    ...

});