我想下载通过 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 方法。我的函数需要路径来创建存档。
$.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.
你们遇到同样的问题吗?我在这个网站上发现了类似的问题,但没有人遇到同样的情况。预先感谢:)
最佳答案
由于安全问题,Ajax 无法用于下载文件。您可以创建一个指向执行该操作的 php 脚本的常规超链接,浏览器将显示保存下载对话框,而无需离开您所在的当前页面。
示例代码:
<script type="text/javascript">
location.href = "url_of_PHP_method";
</script>
关于php - 在 JS 中下载用 PHP 创建的 ZIP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173246/