使用zipArchive addFile()不会将图像添加到zip
我一直在这一段时间。这实际上工作了一次,然后再也没有。它根本不会创建zip文件。该文件确实存在。使用zipArchive addFile()不会将图像添加到zip
$zip = new ZipArchive();
$filename = "./test" . time() .".zip";
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$thisdir = "$_SERVER[DOCUMENT_ROOT]/zip";
$zip->addFile($thisdir . "/trash-icon.png", "/gabage.png");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
如果我添加类似
$zip->addFromString("testfilephp.txt", "#1 This is a test string added as testfilephp.txt.\n");
它创建与它的txt文件的zip ..但一个没有去为anytype类型现有的文件。
ZipArchive::addFile()
方法接受文件路径作为其第一个参数。
在这里,你正在使用:
$zip->addFile("/trash-icon.png", "/gabage.png");
这意味着你正试图将/trash-icon.png
文件添加到您的档案。
您确定此文件存在吗?
注意在该文件的路径的开头有一个/
,这表示它是绝对路径。
也许/
应该被删除,使用相对路径?
对不起,这是我尝试过的众多迭代之一的一个不好的例子。代码更新 – Vance 2011-03-24 17:29:29
ZipArchive :: addFile()方法接受文件的路径作为其第一个参数,但并不是所有路径都是相同的。 addFile()方法默默拒绝该文件,并且永远不知道出了什么问题。如可以从问题中导出,另一种方法将是:
// $zip->addFile($file);
$content = file_get_contents($file);
$zip->addFromString(pathinfo ($file, PATHINFO_BASENAME), $content);
除了获得()中的代码的工作,也的file_get_contents体面生成的错误消息。
这工作对我来说,并保存我从疯狂! – 2014-09-16 09:26:09
聪明的解决方法!我可以通过这种方式找到我的错误。我也从疯狂中解救出来! – dsnunez 2014-12-09 14:26:57
感谢您的解决方法。即使文件is_readable添加文件失败。 – 2016-01-18 10:38:23
请参阅此问题的答案 - 它也适用于图像,并使用addFile而不是addFromString,据我所知,内存使用情况较轻。
我有类似的问题,它与我将要添加到zip文件中的文件有关。
在将文件添加到zip存档之前,最好检查文件是否存在。
$thisdir = "$_SERVER[DOCUMENT_ROOT]/zip";
if (file_exists($thisdir . "/trash-icon.png")) {
$zip->addFile($thisdir . "/trash-icon.png", "/gabage.png");
}
'/ trash-icon.png'几乎肯定是错误的,因为它指向服务器的根目录。你是否100%确定你试图添加的文件实际上存在? – 2011-03-24 17:23:03
您确定/trash-icon.png确实存在,请记住它位于文件系统根目录 – 2011-03-24 17:24:02
http://www.php.net/manual/de/function.ziparchive-addfile.php#101605 – mario 2011-03-24 17:25:17