php - 在 JS 中下载用 PHP 创建的 ZIP 文件

标签 php javascript ajax zip

我想下载通过 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/

相关文章:

php - 注册后如何自动登录

javascript - Angularjs orderby 对象键

Javascript.js :6 Uncaught TypeError: Cannot set property 'background' of undefined

JavaScript 和 AJAX - IDE

javascript - 使用 php 设置延迟通知

javascript - 在 Javascript 中存储 JSON 响应的大小

php - 从数据库中检索碳日期

php - 如何查看相册中的图片

php - DateTime 对象有什么问题

javascript - 我怎样才能让这个函数返回使用 jQuery.ajax 检索到的值?