gpt4 book ai didi

php - 无法在 Windows 资源管理器中打开由 PHP Zip Archive 生成​​的 zip 文件

转载 作者:可可西里 更新时间:2023-11-01 09:45:55 27 4
gpt4 key购买 nike

当我尝试打开由 PHP Zip Archive 生成​​的 zip 文件时,出现警告显示

"Windows cannot open the folder. The Compressed (zipped) Folder 'filename' is invalid." error opening in Windows Explorer.

但我可以通过 7-zip 打开文件。由于某些原因,我必须确保 zip 文件可以通过 Windows 资源管理器打开。我生成 zip 文件时有什么问题吗?请帮忙!

function create_a_zip($files = array(),$dest = '',$root_folder,$overwrite = false) {
if(file_exists($dest) && !$overwrite) {
return false;
}
$valid_files = array();
if(is_array($files)) {
foreach($files as $file) {
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}

if(count($valid_files)) {
$zip = new ZipArchive();
if($zip->open($dest,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
return false;
}
foreach($valid_files as $valid_file) {
if(is_dir($valid_file) === true){
foreach(glob($valid_file . '/*') as $file){
$zip->addFile($file, $root_folder . $file);
}

}else if (is_file($valid_file) === true){
$zip->addFile($valid_file, $root_folder . $valid_file);
}
}
$zip->close();

return file_exists($dest);
}
else
{
return false;
}
}

最佳答案

对我来说,解决方案是在输出 zip 文件内容之前使用 ob_end_clean()(正如@Ywis 在评论中指出的那样)...

ob_end_clean();
readfile($zipfilename); // outputs zip file's content

...即使您在此之前没有输出任何字符。

关于php - 无法在 Windows 资源管理器中打开由 PHP Zip Archive 生成​​的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646426/

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