2

我想下载一个通过 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.

哈你们遇到同样的问题吗?我在这个网站上发现了类似的问题,但没有人面临同样的情况。提前致谢 :)

4

1 回答 1

2

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

示例代码:

<script type="text/javascript">
location.href = "url_of_PHP_method";
</script>
于 2013-04-23T15:28:45.427 回答