使用php创建多个zip文件

时间:2014-05-17 05:51:41

标签: php sql zip

我有一个拥有超过2000个图像路径的数据库。我想做的是从数据库中提取图像路径并将其压缩。我唯一的问题是我需要制作多个zip文件,每个zip中有大约200个图像。所以输出将是image1.zip,image2.zip等。我尝试使用easyzip制作多部分zip,但我的一些用户在提取文件时遇到问题。有谁知道我会怎么做呢?

1 个答案:

答案 0 :(得分:0)

我不知道easyzip是什么,但我使用PHP的ZipArchive库取得了成功(我没有尝试压缩尽可能多的文件,所以你的结果可能会有所不同):

http://us3.php.net/manual/en/class.ziparchive.php

使用easyzip,您的用户遇到了哪些错误?

<强>更新

.zip文件的文件大小限制约为4演出。

虽然可能不太可能,但如果这些图片是照片或其他大尺寸文件,您可能会遇到这个限制。

更新(再次)

我无法评论easyzip或者如何解决您的问题,但如果您希望(并且有时间)实现它,这里是常规PHP中的一种可能的解决方案:

$files          = $filepaths; // However you have retrieved them from your database
$zipFilepath    = "/path/to/zip/file/";
$baseFilename   = "image";

$filesProcessed = 0;
$x              = 1; //$x will be the .zip filename incrementer
$archive        = "";

foreach ($files as $fileToAdd)
{
    if ($filesProcessed === 0 || !$filesProcessed % 200)
    {
        if ($archive)
        {
            $archive->close();
        }
        $archiveFile  = $zipFilepath . $baseFilename . $x . ".zip";
        $archive      = new ZipArchive();
        $archive->open($archiveFile, ZipArchive::CREATE);
        $x++;
    }

    $archive->addFile($fileToAdd);

    $filesProcessed++;
}
$archive->close();

当这样结束时,你的$zipFilepath目录中应该有几个.zip文件,每个文件里面有200个文件。