как определить, указывает ли URL-адрес на SWF
-
06-07-2019 - |
Вопрос
Есть ли способ (предпочтительно с использованием JavaScript) определить, относится ли URL-адрес к SWF или JPG?
Очевидный ответ - просмотреть имя файла для ".jpg" или ".swf", но я имею дело с баннерами, которые динамически определяются сервером и обычно имеют множество параметров и обычно не включают расширение.
поэтому мне интересно, могу ли я сначала загрузить файл, а затем как-то прочитать его, чтобы определить, SWF это или JPG, а затем поместить его, потому что код JavaScript, который мне понадобится для отображения JPG и SWF, сильно отличается.
Спасибо!
Решение
Вы могли бы использовать javascript, чтобы определить, является ли это изображением, создав динамический img-тег.
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.
Другие советы
Я бы расширил ответ Сиджина, сказав:
HTTP-запрос HEAD к URL-адресу может быть использован для проверки mime-типа ресурса.Вам вам не нужно будет загружать остальную часть файла таким образом.
Совершенно непроверенный, по сути, просто идея:
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;
}
Я не уверен в точной настройке, которая у вас есть, но можете ли вы использовать HTTP-ответ и проверить mime-тип, чтобы определить соответствие изображения flash?
Если URL-адрес не имеет расширения, то невозможно определить, не запрашивая файл с сервера.