我在javascript中有一个url,设置为一个变量。像:将文件分类为图像的Javascript
var imageurl='example.com/test/real/image.jpg';
我想承认,如果这是一个图像URL或没有(与JPEG,JPG,GIF,PNG等结尾)。
我试过使用charAt,但没有奏效。
什么是返回1,如果它是一个图像的URL和0否则使用JavaScript的最佳方式?
我在javascript中有一个url,设置为一个变量。像:将文件分类为图像的Javascript
var imageurl='example.com/test/real/image.jpg';
我想承认,如果这是一个图像URL或没有(与JPEG,JPG,GIF,PNG等结尾)。
我试过使用charAt,但没有奏效。
什么是返回1,如果它是一个图像的URL和0否则使用JavaScript的最佳方式?
我想要识别这是否是一个图像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');
});
使用lastIndexOf
和substring
获取文件扩展名和比较,对你有兴趣在不同的图像类型
在这里你去:
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!');
}
尝试:
var fileName = "'example.com/test/real/image.jpg'";
alert(fileName.substring(fileName.lastIndexOf('.') + 1));
你得到你的文件扩展名。根据条件操纵它。
如果你只是从字符串搞清楚事情的办法后,试试用下面:
var imageurl = "some.gif";
imageurl.match("(?:png|jpe?g|gif)$");
// returns ['gif']
这不是一个特别完整的或优雅的解决方案,但它的工作原理。
http://stackoverflow.com/questions/680929/how -to-extract-extension-from-filename-string-in-javascript – david
接受。我们现在可以关闭它。 – David19801
您是否知道,在网络上,文件扩展名完全没有说明URL是否指向图像?如果没有其中一个结尾的URL返回一个图像并且反过来有一个带有**这样的扩展的网址**,则返回除图像外的任何内容是完全可能的。 – RoToRa