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

时间:2013-04-23 15:23:01

标签: 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方法。我的函数需要 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.
你们遇到同样的问题吗?我在这个网站上发现了类似的问题,但没有一个遇到同样的情况。在此先感谢:)

1 个答案:

答案 0 :(得分:2)

由于安全问题,Ajax无法用于下载文件。您可以创建一个到执行操作的php脚本的常规超链接,浏览器将显示保存下载对话框,而不会离开您当前所在的页面。

示例代码:

<script type="text/javascript">
location.href = "url_of_PHP_method";
</script>