2011-11-06 20 views
0

我在javascript中有一个url,设置为一个变量。像:将文件分类为图像的Javascript

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

我想承认,如果这是一个图像URL或没有(与JPEG,JPG,GIF,PNG等结尾)。

我试过使用charAt,但没有奏效。

什么是返回1,如果它是一个图像的URL和0否则使用JavaScript的最佳方式?

+0

http://stackoverflow.com/questions/680929/how -to-extract-extension-from-filename-string-in-javascript – david

+0

接受。我们现在可以关闭它。 – David19801

+5

您是否知道,在网络上,文件扩展名完全没有说明URL是否指向图像?如果没有其中一个结尾的URL返回一个图像并且反过来有一个带有**这样的扩展的网址**,则返回除图像外的任何内容是完全可能的。 – RoToRa

回答

3

我想要识别这是否是一个图像url或不(以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发出HEAD请求并查看响应中的标头是否包含Content-Type: image/something来实现此目的。

你不能这样做,直接从浏览器的JavaScript,但你可以做的是创造一个图像元素,如果负载OK:

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'); 
}); 
3

在这里你去:

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!'); 
} 
0

尝试:

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

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

1

如果你只是从字符串搞清楚事情的办法后,试试用下面:

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

这不是一个特别完整的或优雅的解决方案,但它的工作原理。