即使文件是在没有路径的情况下添加的,PHP ZipArchive仍然是文件的路径

时间:2015-05-15 10:16:10

标签: php wordpress ziparchive

家伙!我看到很多帖子谈论使用ZipArchive以及如何摆脱zip中的路径结构。 所以,这是我的代码:

$zipname = $post->post_title.".zip";
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);

foreach($gallery as $img) {
    $attachment = get_attached_file($img['id']);
    $zip->addFile($attachment, pathinfo($attachment,PATHINFO_BASENAME));
}
$zip->close();

header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
exit;

问题是,zip文件包含没有路径的图像,例如。 /image.jpg和服务器/path/to/the/file/image.jpg上显示的多个目录中的相同图像。

所以,我不确定为什么会这样。有人可以为此提供帮助吗?

1 个答案:

答案 0 :(得分:0)

查看documentation of addFile

$zip->addFile($attachment, pathinfo($attachment,PATHINFO_BASENAME));

pathinfo($attachment,PATHINFO_BASENAME)返回"基本名称",即文件名(没有路径)。第二个参数是文件 IN 压缩文件的名称(带路径)。

如果要在zip中保留完整的路径结构,则应删除此参数:

$zip->addFile($attachment)