我想下载通过PHP方法创建的zip文件。 当用户点击“下载”图标时,会创建zip并自动下载。
zip创建工作正常。 PHP方法的结尾如下:
header("Content-disposition: attachment;filename=\"archive.zip\"");
header('Content-Type: application/zip');
header('Content-Length: ' . filesize($path_archive));
readfile($path_archive);
return;
这是我的JS文件中的AJAX方法。我的函数需要 path 来创建存档。
$.ajax({
url: "url_of_PHP_method",
data : { path : path },
type: 'GET',
success: function (data) {
var uriContent = "data:application/zip;" + data;
var myWindow = window.open(uriContent, "archive.zip");
myWindow.focus();
}
});
不幸的是,下载的文件称为“下载”。 它没有扩展名,即使我用.zip扩展名重命名,打开它也会出错:
End-of-central-directory signature not found.
你们遇到同样的问题吗?我在这个网站上发现了类似的问题,但没有一个遇到同样的情况。在此先感谢:)
答案 0 :(得分:2)
由于安全问题,Ajax无法用于下载文件。您可以创建一个到执行操作的php脚本的常规超链接,浏览器将显示保存下载对话框,而不会离开您当前所在的页面。
示例代码:
<script type="text/javascript">
location.href = "url_of_PHP_method";
</script>