gpt4 book ai didi

php - 使用 php 创建和提供压缩文件

转载 作者:可可西里 更新时间:2023-11-01 00:07:49 25 4
gpt4 key购买 nike

我正在尝试使用以下代码从目录创建一个 zip 文件,并通过 http 下载将其提供给用户:

 // write the file
file_put_contents($path . "/index.html", $output);

// zip up the contents
chdir($path);
exec("zip -r {$course->name} ./");

$filename = "{$course->name}.zip";

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' .urlencode($filename));
header('Content-Transfer-Encoding: binary');

readfile($filename);

我可以创建 zip 文件,但无法通过 http 下载它。如果我下载使用 ftp 客户端创建的 zip 文件,Mac 的 Stuffit Expander 会很好地解压缩文件,但如果我通过 http 下载它,mac 解压缩程序会创建一个无限循环。我的意思是说我下载的文件名为 course.zip,然后解压缩该文件会生成 course.zip.cpgz,然后再次解压缩该文件会生成 course.zip...等等。

有人有什么想法吗?

谢谢!

最佳答案

我遇到了这个问题,结果发现下载的 zip 文件在开头插入了一个新行。

通过使用 ob_clean 和 flush 函数解决

    header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=".basename($archive_file_name));
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($archive_file_name));
ob_clean();
flush();
echo readfile("$archive_file_name");

关于php - 使用 php 创建和提供压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1436239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com