【问题标题】:javascript file type check not working for jpeg but does work for pngjavascript文件类型检查不适用于jpeg但适用于png
【发布时间】:2014-07-02 22:10:27
【问题描述】:

我在上传到我的服务器之前检查文件类型,但文件类型检查仅适用于 png,现在适用于 jpeg:

for(var j = 0; j < $files.length; j++) {
  if(!$files[j].type.match('image/png') || !$files[j].type.match('image/jpeg')) {
    $scope.all_files_images = false;
  }
}

当类型为 image/jpeg 时,$scope.all_files_images = false; 被执行,它不应该被执行。对png效果很好。我检查了类型,一切看起来都很好。

【问题讨论】:

  • 你试过用新的html5文件api代替吗??
  • 你可能会看看这个类似的帖子是否有帮助:stackoverflow.com/questions/14345755/…
  • 我敢打赌,在您像上面的代码一样添加 .jpg 测试后,它不适用于 .png 文件 :)

标签: javascript


【解决方案1】:

你的逻辑是错误的。您的代码说,“如果它不是 PNG 或它不是 JPG,那么......”

如果是其中一个,它仍然会失败,因为它不是另一个。换句话说,如果它一个.png文件,那么当然,这意味着它不是一个.jpg文件,所以测试认为它是一个错误。

|| 更改为&amp;&amp;。然后它会是,“如果它不是 PNG 并且它不是 JPG 那么......”,这是正确的。

【讨论】:

    【解决方案2】:

    您正在传递一个字符串,例如'image/png'match() 方法。不幸的是,match() 不需要一个字符串,它需要一个 RegExp 对象......就像这样:

    match(/gif|png|jpg|jpeg/);

    【讨论】:

    • 它将字符串转换为正则表达式。
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多