【问题标题】:How to detect a mislabeled WebP file with javascript? [duplicate]如何使用 javascript 检测错误标记的 WebP 文件? [复制]
【发布时间】:2019-09-10 16:28:11
【问题描述】:

我接受这样的新文件:

<input type="file" accept="image/x-png,image/gif,image/jpeg" required>

我目前没有安装转换器,因此上传的 webp 图像在 ios 或 Safari 上显示时将无法正常工作。为了解决这个问题,我添加了 jpg、png 和 gif 的“accept”属性。

但是,如果用户将 webp 重命名为接受的文件之一,我的文件选择器将不会检测到错误标签,但它仍然是 webp,因此如所述那样被破坏。

有没有更好的方法来使用 html 或 javascript 检查文件类型?

【问题讨论】:

标签: javascript html webp


【解决方案1】:

// JS

    <script>
      var fileextension = "jpg|jpeg|gif|png|ico|bmp";

      function checkExtension(value)
      {
      if(value=="")return true;
      var re = new RegExp("^.+\.("+fileextension+")$","i");
      if(!re.test(value))
      {
      alert("File not allowed! \n" + value + "\n\nAllowed:    
      "+fileextension.replace(/\|/g,',')+" \n\n");
       return false;
       }

       return true;
       }
   </script>

//HTML

 <input type="file" name="image" onChange="checkExtension(this.value)">

【讨论】:

  • 这仍然允许利用,问题是人们可以将 image.webp 重命名为 image.jpg,但底层文件类型不会改变。然后 safari 上的用户看不到该文件,甚至认为它被标记为 image.jpg,因为它实际上仍然是 webp。
  • 请解释您的代码是如何工作的,以及 OP 如何修复它以使其适合他们的需求。
  • 不知道简单的重命名是否会将标头从 webp 更改为 jpg。您可以使用 php 转换图像。 php.net/manual/de/imagick.readimage.php
  • @JackBashford 可能我一开始误解了这个问题。该代码只会检查所选图像的文件类型。它不检查 mime 类型或图像标题。
猜你喜欢
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2011-11-21
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
相关资源
最近更新 更多