家伙!我看到很多帖子谈论使用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上显示的多个目录中的相同图像。
所以,我不确定为什么会这样。有人可以为此提供帮助吗?
答案 0 :(得分:0)
$zip->addFile($attachment, pathinfo($attachment,PATHINFO_BASENAME));
pathinfo($attachment,PATHINFO_BASENAME)
返回"基本名称",即文件名(没有路径)。第二个参数是文件 IN 压缩文件的名称(带路径)。
如果要在zip中保留完整的路径结构,则应删除此参数:
$zip->addFile($attachment)