【问题标题】:Edit page image upload concept using Nodejs使用 Nodejs 编辑页面图像上传概念
【发布时间】:2019-07-27 18:55:39
【问题描述】:

我是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:无法将 undefined 或 null 转换为对象 在 Function.keys()

【问题讨论】:

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


【解决方案1】:

使用if语句和typeof运算符检查req.files是否可用,是否为对象类型,如下所示:

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 
    ...
    ...
    ...

});

【讨论】:

  • 感谢您的代码,它工作正常,请您解释一下这一行if(req.files != null && typeof req.files == 'object')
  • req.files是一个对象,你应该检查req.files是否可用`req.files != null`然后你应该检查req.files的类型是否是对象或不使用 typeof 运算符。如果答案解决了您的问题,请将其标记为已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2021-08-15
  • 1970-01-01
相关资源
最近更新 更多