有没有办法(最好使用JavaScript)来确定URL是SWF还是JPG?
明显的答案是嗅探“.jpg”或“.swf”的文件名,但我正在处理由服务器动态决定的横幅,通常有很多参数,通常不包含扩展名。
所以我想知道我是否可以首先加载文件,然后以某种方式读取它以确定它是SWF还是JPG,然后放置它,因为我需要显示JPG与SWF的JavaScript代码非常不同。
谢谢!
答案 0 :(得分:3)
我会通过说:
来扩展Sijin的答案对URL的HTTP HEAD请求可用于检查资源的mime类型。您 不需要以这种方式下载文件的其余部分。
答案 1 :(得分:3)
您可以使用javascript通过创建动态img-tag来检测它是否是图像。
function isImage(url, callback) {
var img = document.createElement('img');
img.onload = function() {
callback(url);
}
img.src = url;
}
然后用:
调用它isImage('http://animals.nationalgeographic.com/staticfiles/NGS/Shared/StaticFiles/animals/images/primary/bald-eagle-head.jpg', function(url) { alert(url + ' is a image'); });
<强>更新强> 此版本将始终使用布尔值执行回调。
function isImage(url) {
var img = document.createElement('img');
img.onload = function() {
isImageCallback(url, true);
}
img.onerror = function() {
isImageCallback(url, false);
}
img.src = url;
}
function isImageCallback(url, result) {
if (result)
alert(url + ' is an image');
else
alert(url + ' is not an image');
}
将您的逻辑放在isImageCallback函数中。
答案 2 :(得分:3)
完全未经测试,基本上只是一个想法:
function isImage(url)
{
var http = getHTTPObject();
http.onreadystatechange = function ()
{
if (http.readyState == 4)
{
var contentType = http.getResponseHeader("Content Type");
if (contentType == "image/gif" || contentType == "image/jpeg")
return true;
else
return false;
}
}
http.open("HEAD",url,true);
http.send(null);
}
function getHTTPObject()
{
if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
else
{
if (window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
return false;
}
答案 3 :(得分:2)
我不确定您的确切设置,但是您可以使用HTTP响应并检查mime类型以确定图像与闪存吗?
答案 4 :(得分:0)
如果网址没有扩展名,那么在没有从服务器请求文件的情况下无法判断。