php zip提取使文件为空
Posted
技术标签:
【中文标题】php zip提取使文件为空【英文标题】:php zip extract makes file empty 【发布时间】:2020-06-17 12:41:05 【问题描述】:好吧,这让我抓狂了……我抽象了代码,因为它来自一个大项目。但在我的项目中,我最终评论了所有内容,只剩下这个仍然导致问题,我不知道为什么。
$f = fopen('tmp/'.$name.'.zip', 'wb');
fwrite($f, $myzip);
fclose($f); //I can open this file manually and everything is fine
$zip = new ZipArchive;
$res = $zip->open('tmp/'.$name.'.zip'); //$res is "1"
$zip->extractTo("final/" . $unique);
$zip->close();
如您所见,我在/tmp
中编写了一个 zip 文件,此时,我可以手动打开该文件,它包含所有大小正确的文件。
但是在我把它解压到/final
之后,由于某种原因,有些文件是空的......
知道是什么原因造成的吗?
【问题讨论】:
您是否在创建 zip 文件后,在解压之前检查文件内容?它是否包含所需的所有文件? 是的,只有解压后,解压后的文件是空的 您可以尝试提取到静态路径:$zip->extractTo("/final/myPath/");
。您是否在空文件中看到任何模式(即 - 文件扩展名)?
【参考方案1】:
您可以通过在 zip 存档打开时抛出异常来做到这一点,
function DecompressFile()
$zip = new ZipArchive;
if ($zip->open('tmp/'.$name.'.zip') === TRUE)
$zip->extractTo("final/" . $hwidDir);
$zip->close();
return 'completed';
else
throw new Exception ("Decompress operation from ZIP file failed.");
【讨论】:
以上是关于php zip提取使文件为空的主要内容,如果未能解决你的问题,请参考以下文章
dedecms中提取的zip压缩文件操作类zip.class.php