我想使用 javascript 下载文件并解析它。我需要一个像 php 的函数file_get_contents()
。我寻找它,但我找不到任何东西。
更新:感谢您的解决方案,但我忘了写 AJAX 不适合这个问题,因为我无权访问远程地址并且有跨域请求问题。我也无法设置任何 php 代理,因为我的主机阻止了对 fopen 的访问。我更喜欢纯 JavaScript 解决方案。
PS:对不起,但这个问题确实是重复的(我不知道),这里提供的解决方案非常适合这个问题。
我想使用 javascript 下载文件并解析它。我需要一个像 php 的函数file_get_contents()
。我寻找它,但我找不到任何东西。
更新:感谢您的解决方案,但我忘了写 AJAX 不适合这个问题,因为我无权访问远程地址并且有跨域请求问题。我也无法设置任何 php 代理,因为我的主机阻止了对 fopen 的访问。我更喜欢纯 JavaScript 解决方案。
PS:对不起,但这个问题确实是重复的(我不知道),这里提供的解决方案非常适合这个问题。
查看 XMLHttp 请求
http://www.w3schools.com/xml/xml_http.asp
或者 JQuery 的 load、$.get、$.post 和 $.ajax 方法。这里是一个示例
var request = new XMLHttpRequest();
request.open("GET", 'http://www.url.com');
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status === 200) {
//response handling code
}
};
request.send(null); // Send the request now
简短的问题,简短的回答:您可能想玩一些 Ajax。通过调用本地 php 脚本制作 afile_get_contents()
并将其返回页面,或者直接调用外部 URL。您的浏览器可能不允许您这样做。
补充:
您更新了您的问题,说您更喜欢纯 javascript 解决方案。我不认为你可以,因为你试图获取不是JSONP的东西。另外,您说您的主机阻塞fopen()
,我曾经在他们做同样事情的主机上。我惊讶地发现他们没有阻止使用 sockets,这是我的解决方法:
$server = "www.example.com";
$path = "/path/index.html";
$type = "HTTP/1.1";
$fp = fsockopen($server, 80, $errno, $errstr, 30);
if (!$fp) echo "$errstr ($errno)<br />\n";
else {
$out = "GET $path $type\r\n";
$out .= "Host: $server\r\n";
$out .= "User-Agent: Mozilla 4.0\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$contents = "";
while (!feof($fp)) $contents .= fgets($fp, 128);
fclose($fp);
echo $contents;
}
我意识到您不想要 PHP 代理解决方案,我认为您可能别无选择。试试看,对我很有用。如果您的主机也被阻止fsockopen()
,您可能会不走运。
看看XMLHttpRequest。它从网络上异步下载文件。
如果您打算使用jquery
,请查看 .ajax(),它包装了 XMLHttpRequest。
iframe: 在您的页面上放置一个不可见的 iframe,
<iframe id="frame1" style="display:none"></iframe>
触发下载[点击或其他事件处理程序等],并设置 iframe 的 URL。例如 ,"/location/file"
var iframe = document.getElementById("frame1");
iframe .src = "/location/file";
这将触发从浏览器下载。
另一种方法是简单地导航到下载 url,浏览器发现 MIME 类型无法显示并会显示一个下载对话框。利用
window.location.href = "/location/file";