使用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类型现有的文件。

+0

'/ trash-icon.png'几乎肯定是错误的,因为它指向服务器的根目录。你是否100%确定你试图添加的文件实际上存在? – 2011-03-24 17:23:03

+0

您确定/trash-icon.png确实存在,请记住它位于文件系统根目录 – 2011-03-24 17:24:02

+0

http://www.php.net/manual/de/function.ziparchive-addfile.php#101605 – mario 2011-03-24 17:25:17

ZipArchive::addFile()方法接受文件路径作为其第一个参数。


在这里,你正在使用:

$zip->addFile("/trash-icon.png", "/gabage.png"); 

这意味着你正试图将/trash-icon.png文件添加到您的档案。


您确定此文件存在吗?

注意在该文件的路径的开头有一个/,这表示它是绝对路径。
也许/应该被删除,使用相对路径?

+0

对不起,这是我尝试过的众多迭代之一的一个不好的例子。代码更新 – 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体面生成的错误消息。

+0

这工作对我来说,并保存我从疯狂! – 2014-09-16 09:26:09

+0

聪明的解决方法!我可以通过这种方式找到我的错误。我也从疯狂中解救出来! – dsnunez 2014-12-09 14:26:57

+0

感谢您的解决方法。即使文件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"); 
}