如何从外部URL下载文件到变量?

时间:2013-08-04 17:24:20

标签: javascript

好吧,getfile可以用来从SYSTEM获取文件,但是,如何下载site.com/t.txt?

我无法真正找到它,而且我发现的内容没有用,如果之前被问到,请重定向我。

2 个答案:

答案 0 :(得分: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完全兼容,因为Internet Explorer使用ActiveXObject而不是XMLHTTPRequest,所以需要更多的代码。

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这样的库而不是这个。有关更多信息

答案 1 :(得分:0)

只要你不反对同源政策,这很容易。在这种情况下,如果您的脚本嵌入在foo.com的页面中并且请求文件foo.com/*而不是subdomain.foo.com /*,则域匹配。

您只需要为文件发出XMLHttpRequest的GET请求,然后从响应中读取文件的内容。

如果文件位于foo.com但页面不是,则需要在foo.com上托管该脚本,然后将其包含在此页面中<script src="foo.com/filerequestscript.js"></script>。 (当然,如果你不控制foo.com,那就不太可能发生。)