【问题标题】:Validate Image width & height before upload in Node, Express With Multer在 Node 中上传之前验证图像宽度和高度,使用 Multer 表达
【发布时间】:2018-07-14 11:03:33
【问题描述】:

我正在Nodejs 中构建一个项目,使用express 框架和ejs 作为视图引擎,我被困在需要上传图像的地方,我正在使用Multer,但问题是我想要如果图像的高度或宽度小于或大于预设大小,例如70px * 40Px,则设置一个不将图像上传到服务器的标准,之前我曾经使用 codeignitor 无缝地做到这一点。

我可以搜索的所有解决方案都使用 GM(Graphics Magick),但在通过 Multer 上传图像后开始发挥作用。我不是在寻找代码帮助,而是对 npm 中可以为我执行此操作的任何已知插件的任何建议。

注意:我不相信客户端验证,即使我使用一个,我仍然保持服务器端验证正常工作,所以我也在寻找服务器端解决方案。

【问题讨论】:

  • 您必须信任客户端验证或允许将图像上传到服务器。不能两全其美。
  • 您可以对文件大小和mime类型设置合理的限制,以适应您想要的图像分辨率,如果不符合规格则拒绝它
  • @charsi 是正确的 - 你不能同时拥有它。如果您选择服务器端并想要一个 nodejs 解决方案(即没有 GM 依赖项)来验证图像的宽度/高度,请查看Jimp。访问提到的属性here 可用于帮助验证(即image.bitmap.width;image.bitmap.height;)。
  • 我已经用 multer & gm 实现了相同的功能,并且只是编写了一个代码,以便如果图像不是所需的尺寸,它将在发送错误消息之前自动删除。

标签: javascript node.js express npm


【解决方案1】:

在客户端,您可以将文件读入新的 IMG 元素。然后您可以检查图像元素的宽度和高度。

JSFiddle:https://jsfiddle.net/vz7yjbmf/

$('input').on('change',function(){
    var input=this;
    var reader = new FileReader();
    reader.onload = function(e) {
      var x=new Image()
      x.onload=function(){
        alert('width=' + x.width + ', height:' + x.height)
      }
      x.src= e.target.result;
    }

    reader.readAsDataURL(input.files[0]);
  }      
})

【讨论】:

  • 这是客户端在multer mate中呢?
  • @gaurav-komar 在上传之前询问,所以它必须在客户端。在到达服务器之前。
  • 我猜很好。
猜你喜欢
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 2012-02-12
  • 2012-01-19
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多