【问题标题】:Javascript to classify files as imagesJavascript将文件分类为图像
【发布时间】:2011-11-06 20:12:00
【问题描述】:

我在 javascript 中有一个 url,设置为变量。喜欢:

var imageurl='example.com/test/real/image.jpg';

我正在尝试识别这是否是图片网址(以 jpeg、jpg、gif、png 等结尾)。

我尝试使用 charAt 但它不起作用。

如果是图像 url,则返回 1,否则使用 javascript 返回 0 的最佳方法是什么?

【问题讨论】:

  • 已接受。我们现在可以关闭它了。
  • 您是否知道,在网络上,文件扩展名对于 URL 是否指向图像完全没有任何意义?绝对有可能让一个没有这些结尾之一的 URL 返回一个图像,而相反地有一个 URL with 这样的扩展返回除了图像之外的任何东西。

标签: javascript html


【解决方案1】:

我正在尝试识别这是否是图片网址(以 jpeg、jpg、gif、png 等结尾)。

文件扩展名(如果有的话)与 URL 是否指向图像类型的资源无关。这只是某些人对静态资源使用的约定。

如果您只需要它作为一般启发式方法,则查看文件扩展名就足够了:

// User browser's built-in URL parsing to discard query string etc
//
var a= document.createElement('a');
a.href= url;
var ext= a.pathname.split('.').pop().toLowerCase();
var mightbeimage= ext=='gif' || ext=='jpeg' || ext=='jpg' || ext=='png';

但为了准确起见,确定 URL 是否指向图像的唯一方法是获取该 URL 并查看返回的内容。通常,您会通过向 URL 发出 HEAD 请求并查看响应中的标头是否包含 Content-Type: image/something 来做到这一点。

您不能直接从浏览器 JavaScript 执行此操作,但您可以创建一个图像元素并查看加载是否正常:

function checkImage(url, callback) {
    var img= new Image();
    img.onload= function() { callback(true); }
    img.onerror= function() { callback(false); }
    img.src= url;
}

checkImage('http://www.google.co.uk/images/srpr/logo3w.png', function(isimage) {
    if (isimage)
        alert('Yes, it is an image');
    else
        alert('Nope, not an image, or does not exist or other error');
});

【讨论】:

    【解决方案2】:

    给你:

    var imageurl = 'example.com/test/real/image.jpg';
    ext = imageurl.split('.').reverse()[0];
    if (['jpg','gif','png'].indexOf(ext.toLowerCase()) > -1) {
        console.log('true!');
    } else {
        console.log('false!');
    }
    

    【讨论】:

      【解决方案3】:

      如果您只是想从字符串中找出问题,请尝试使用以下方法:

      var imageurl = "some.gif";
      imageurl.match("(?:png|jpe?g|gif)$");
      // returns ['gif']
      

      这不是一个特别完整或优雅的解决方案,但它确实有效。

      【讨论】:

        【解决方案4】:

        使用lastIndexOfsubstring 获取文件扩展名并将其与您感兴趣的不同图像类型进行比较。

        【讨论】:

          【解决方案5】:

          尝试:

          var fileName = "'example.com/test/real/image.jpg'";
          alert(fileName.substring(fileName.lastIndexOf('.') + 1)); 
          

          你得到你的文件扩展名。根据条件操作它。

          【讨论】:

            猜你喜欢
            • 2010-12-15
            • 2013-04-24
            • 2017-02-27
            • 2016-02-14
            • 2020-09-18
            • 1970-01-01
            • 1970-01-01
            • 2019-09-23
            • 1970-01-01
            相关资源
            最近更新 更多