【问题标题】:php zip extract makes file emptyphp zip提取使文件为空
【发布时间】: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/");。您是否在空文件中看到任何模式(即 - 文件扩展名)?

标签: php web zip backend archive


【解决方案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.");
    }
}

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多