2013-08-04 6 views
2

글쎄, getfile은 SYSTEM에서 파일을 가져 오는 데 사용할 수 있지만 site/t.txt는 어떻게 다운로드합니까?외부 URL에서 변수로 파일을 다운로드하려면 어떻게해야합니까?

나는 정말로 그것을 발견 할 수 없었고, 내가 찾은 것은 유용하지 않다. 이전에 물어 보면 리다이렉트 해주세요.

+0

어떻게 아약스와 GET 요청에 대한? – MightyPork

+2

그렇지 않습니다. Javascript는 동일한 원산지 정책을 가지고 있습니다! – adeneo

+0

나는 서버 측 스크립트가 필요하다고 생각한다. – putvande

답변

1

XMLHTTPRequest를 사용하는 최신 브라우저에서는 사용자의 요구 사항이 매우 간단합니다. 예를 들어 :

function load(url, callback) { 
    var xhr = new XMLHTTPRequest(); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4 && xhr.status === 200) callback(xhr.responseText); 
    }; 
    xhr.open("GET", url, true); 
} 
load("site.com/t.txt", function (contents) { 
    // contents is now set to the contents of "site.com/t.txt" 
}); 

그러나 Internet Explorer가 대신하는 XMLHTTPRequest의 ActiveXObject를 사용하기 때문에 조금 더 많은 코드가 필요 Internet Explorer를 전체 브라우저 호환성을 보장합니다.

function createXHR() { 
    if (typeof XMLHTTPRequest === "undefined") { 
    if (createXHR._version) return new ActiveXobject(createXHR._version); 
    else { 
     var versions = [ 
     "Micrsoft.XMLHTTP", 
     "Msxml2.XMLHTTP", 
     "Msxml2.XMLHTTP", 
     "Msxml2.XMLHTTP.3.0", 
     "Msxml2.XMLHTTP.4.0", 
     "Msxml2.XMLHTTP.5.0", 
     "Msxml2.XMLHTTP.6.0" 
     ]; 
     var i = versions.length; 
     while (--i) try { 
     var v = versions[i], xhr = new ActiveXObject(v); 
     createXHR._version = v; 
     return xhr; 
     } catch {} 
    } 
    } else return new XMLHTTPRequest(); 
} 
function load(url, callback) { 
    var xhr = createXHR(); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4 && xhr.status === 200) callback(xhr.responseText); 
    }; 
    xhr.open("GET", url, true); 
} 

대신 jQuery와 같은 라이브러리를 사용하는 것이 좋습니다. 자세한 내용은

+0

이 XMLHTTPRequest의 이름을 XMLHttpRequest로 지정해야합니다. –

0

동일 원산지 정책에 반대하지 않는 한 매우 쉽습니다. 이 경우 foo.com의 페이지에 스크립트가 포함되어 있고 subdomain.foo.com/*이 아닌 foo.com/* 파일을 요청하면 도메인이 일치합니다.

파일에 대해 XMLHttpRequest과 함께 GET 요청을하고 응답에서 파일 내용을 읽는 것만으로 충분합니다.

파일이 foo.com에 있지만 페이지가 아닌 경우 foo.com에서 스크립트를 호스팅 한 다음이 페이지에 <script src="foo.com/filerequestscript.js"></script>과 함께 포함시켜야합니다. (물론 foo.com을 통제하지 않으면 일어날 가능성은 희박합니다.)

+0

스크립트 요소를 사용하여'.txt' 파일을 가져올 수 없으며 CORS를 사용하는 경우 XHR로 여러 도메인에서 파일을 가져올 수 있습니다. – Quentin

관련 문제