我正在做的是使用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触发下载提示?
更新2:所以这就是我想要实现的目标:我有一个带有“下载”按钮的页面,单击该按钮将触发javascript XMLHttpRequest来调用PHP页面(这样,浏览器地址栏将保持不变,即它不会访问PHP页面)。我想使用此背景XMLHttpRequest来调用PHP页面,该页面返回将调用用户下载提示的内容(包含所有合法标题,即Content-Type,...)。
答案 0 :(得分:0)
请勿使用此行:
header("Content-Type: application/force-download");
如果您要强制下载zip
文件,请使用zip
个文件的实际MIME类型:
header("Content-Type: application/zip");