如何使用 JavaScript 猜测文件扩展名(客户端)
How to guess file extension with JavaScript (client side)
我有一个小webapp,里面有多个文件夹(每个文件夹名是一个ID),每个文件夹里都有一张图片,可以是JPG,PNG 或 GIF
结构是这样的:
$("#logo").attr('src','../images/article/'+json.id+'/logo.jpg');
我不知道文件的真正扩展名,很多文章有JPG,其他有PNG,还有一些有GIF,这就是所有可能。
我如何猜测和设置正确的扩展名,也许使用某种 onerror
事件?
感谢阅读,请原谅我的英语不好!
您可以使用 jquery .each()
函数检查文件是否存在,如下所示。如果您需要传递 json.id ,则需要将其嵌套在 for 循环中。注意:我没有测试过这段代码。
var url;
$.each([ 'gif', 'jpg', 'png' ], function( index, value ) {
url='../images/article/'+json.id+'/logo.' + value);
if(UrlExists(url)){
$("#logo").attr('src',url);
} else {
//handle false
}
});
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
我有一个小webapp,里面有多个文件夹(每个文件夹名是一个ID),每个文件夹里都有一张图片,可以是JPG,PNG 或 GIF
结构是这样的:
$("#logo").attr('src','../images/article/'+json.id+'/logo.jpg');
我不知道文件的真正扩展名,很多文章有JPG,其他有PNG,还有一些有GIF,这就是所有可能。
我如何猜测和设置正确的扩展名,也许使用某种 onerror
事件?
感谢阅读,请原谅我的英语不好!
您可以使用 jquery .each()
函数检查文件是否存在,如下所示。如果您需要传递 json.id ,则需要将其嵌套在 for 循环中。注意:我没有测试过这段代码。
var url;
$.each([ 'gif', 'jpg', 'png' ], function( index, value ) {
url='../images/article/'+json.id+'/logo.' + value);
if(UrlExists(url)){
$("#logo").attr('src',url);
} else {
//handle false
}
});
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}