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