Javascript+PHP XMLHttpRequest下载提示


Javascript+PHP XMLHttpRequest download prompt

我正在做的是使用PHP获取外部文件,并将其发送到客户端的浏览器。但是下面的代码不会弹出下载提示。使用Chrome的开发人员工具,我可以在Network -> Response中看到数据被正确获取。但是浏览器什么也没发生。

<?php
header("Content-Disposition: attachment;filename=Example.zip");
header('Content-Description: File Transfer');
header("Content-Type: application/force-download");
header('Content-Transfer-Encoding: binary');
header("Content-Length: 512");
header("HTTP/1.1 206 Partial Content");
$x=fopen("http://www.example.com/example.zip","r");

echo fread($x,512);
fclose($x);
exit;
?>

UPDATE:事实上,我已经找出了问题所在:我没有使用用户的点击调用PHP,而是javascript的XMLHttpRequest。当我直接访问上面的PHP页面时,一切都运行得很好。很抱歉。但是现在的问题是:是否有可能使用javascript XMLHttpRequest触发下载提示?

UPDATE 2:所以这就是我想要完成的:我有一个带有"下载"按钮的页面,单击该按钮将触发javascript XMLHttpRequest来调用PHP页面(这样,浏览器地址栏将保持不变,即它不会访问PHP页面)。我想使用这个后台XMLHttpRequest来调用PHP页面,它返回内容(带有所有合法的标头,即content - type,…),将为用户调用下载提示。

不要用这一行:

header("Content-Type: application/force-download");

如果强制下载zip文件,请使用zip文件的实际MIME类型:

header("Content-Type: application/zip");