2015-05-15 3 views
1

ребята! Я видел много сообщений об использовании ZipArchive и о том, как избавиться от структуры пути внутри zip. Итак, вот мой код:PHP ZipArchive по-прежнему остается путь к файлу, даже если файл добавлен без пути

$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; 

Проблема заключается в том, что почтовый файл содержит изображение без пути, F.E. /image.jpg и одно и то же изображение в нескольких каталогах, как показано на сервере /path/to/the/file/image.jpg.

Итак, я не уверен, почему это происходит. Может ли кто-нибудь помочь в этом?

ответ

0

Глядя на documentation of addFile:

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

pathinfo($attachment,PATHINFO_BASENAME) возвращает вам «базовое имя», то есть имя файла (без пути). Второй параметр - это имя (с указанием пути) файла В почтовый индекс.

Если вы хотите сохранить полную структуру пути в своем почтовом, вы должны удалить этот параметр:

$zip->addFile($attachment) 
+0

Спасибо за попытку, может быть, я не получил ты прав, но вы видите, у меня есть это как this: $ zip-> addFile ($ attachment, pathinfo ($ attachment, PATHINFO_BASENAME)); где $ attachment - полный путь к файлу. Я использую pathinfo для извлечения только имени файла, поэтому zip-файл будет иметь следующее изображение: /images.jpg. Но моя проблема в том, что файл добавлен как /image.jpg AND /path/to/file/image.jpg – Swagger

+0

Вы уверены, что по некоторым причинам вы не открываете файл, который уже был создан? В качестве хорошей практики вы должны проверить вывод функций 'open' и' addFile' (то есть, что они не возвращают 'false') – magnetik

 Смежные вопросы

  • Нет связанных вопросов^_^