using zipArchive addFile() will not add image to zip

好久不见. 提交于 2019-11-30 19:20:44

The ZipArchive::addFile() method accepts the path to the file as its first parameter, but not all paths are created equal. addFile() method silently rejects the file and you never know what went wrong. As can be derived from the question, an alternative approach would be:

// $zip->addFile($file);
$content = file_get_contents($file);
$zip->addFromString(pathinfo ( $file, PATHINFO_BASENAME), $content);

In addition to getting the code working, file_get_contents() also generates decent error messages.

The ZipArchive::addFile() method accepts the path to the file as its first parameter.


Here, you are using :

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

Which means you are trying to add the /trash-icon.png file to your archive.


Are you sure this file exists ?

Note there is a / at the beginning of that file's path, which indicates it's an absolute path.
Maybe that / should be removed, to use a relative path ?

I had similar kind of issue and it was related with the file that I was going to add to the zip archive.

Before adding file to zip archive, it's always better to check if the file exists.

$thisdir = "$_SERVER[DOCUMENT_ROOT]/zip";
if (file_exists($thisdir . "/trash-icon.png")) {
    $zip->addFile($thisdir . "/trash-icon.png", "/gabage.png");
}

See the answer to this question - it also works for images, and uses addFile instead of addFromString, which as far as I know is lighter in memory usage.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!