문제

URL이 SWF 또는 JPG에 있는지 여부를 결정하는 방법 (JavaScript를 사용하여 선호하는 JavaScript)이 있습니까?

명백한 대답은 ".jpg"또는 ".swf"의 파일 이름을 스니핑하는 것이지만 서버에 의해 동적으로 결정되고 일반적으로 많은 매개 변수가 있으며 일반적으로 확장자가 포함되지 않는 배너를 다루고 있습니다.

따라서 파일을 먼저로드 한 다음 SWF 또는 JPG인지 판단하여 파일을 읽을 수 있는지 궁금합니다. JPG 대 SWF를 표시해야하기 때문에 JavaScript 코드가 매우 다릅니다.

감사!

도움이 되었습니까?

해결책

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 함수에 논리를 넣으십시오.

다른 팁

나는 다음과 같이 말함으로써 Sijin의 대답을 확장 할 것이다.

URL에 대한 HTTP 헤드 요청을 사용하여 리소스의 마임 유형을 검사 할 수 있습니다. 나머지 파일을 그런 식으로 다운로드 할 필요가 없습니다.

완전히 테스트되지 않은 것은 기본적으로 아이디어 일뿐입니다.

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 타입을 확인하여 이미지 대 플래시를 결정할 수 있습니까?

URL에 확장자가없는 경우 서버에서 파일을 요청하지 않고는 알 수있는 방법이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top