gpt4 book ai didi

php - 如何压缩文件夹并使用php下载它?

转载 作者:可可西里 更新时间:2023-10-31 23:59:27 24 4
gpt4 key购买 nike

我有一个名为“数据”的文件夹。这个“data”文件夹包含一个文件“filecontent.txt”和另一个名为“Files”的文件夹。 "file"文件夹包含一个“info.txt”文件。所以它是文件夹结构中的文件夹。

我必须压缩这个文件夹“data”(使用 php)以及其中的文件和文件夹,然后下载压缩文件。

我已经尝试了 http://www.php.net/manual/en/zip.examples.php 提供的示例这些例子没有用。我的PHP版本是5.2.10

请帮忙。

这段代码是我写的。

<?php
$zip = new ZipArchive;
if ($zip->open('check/test2.zip',ZIPARCHIVE::CREATE) === TRUE) {
if($zip->addEmptyDir('newDirectory')) {
echo 'Created a new directory';
} else {
echo 'Could not create directory';
}
$zipfilename="test2.zip";
$zipname="check/test2.zip";

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename=check/test1.zip'); //header('Content-Length: ' . filesize( $zipfilename));
readfile($zipname); //$zip->close(); } else { echo failed';
}
?>

文件已下载但无法解压

最佳答案

您需要在目录中递归添加文件。像这样的东西(未经测试):

function createZipFromDir($dir, $zip_file) {
$zip = new ZipArchive;
if (true !== $zip->open($zip_file, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE)) {
return false;
}
zipDir($dir, $zip);
return $zip;
}

function zipDir($dir, $zip, $relative_path = DIRECTORY_SEPARATOR) {
$dir = rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (file === '.' || $file === '..') {
continue;
}
if (is_file($dir . $file)) {
$zip->addFile($dir . $file, $file);
} elseif (is_dir($dir . $file)) {
zipDir($dir . $file, $zip, $relative_path . $file);
}
}
}
closedir($handle);
}

然后调用$zip = createZipFromDir('/tmp/dir', 'files.zip');

为了获得更多胜利,我建议您阅读 SPL DirectoryIterator here

关于php - 如何压缩文件夹并使用php下载它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484347/

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