Как создать архив картинок для Drupal8?

Главные вкладки

Аватар пользователя pingvin156 pingvin156 13 апреля 2019 в 9:19

Создаю архив фотоотчетов с помощью следующего кода:

$file_folder = \Drupal::service('file_system')->realpath(file_default_scheme() . "://") . "/WorkImages"; // папка с файлами
if (extension_loaded('zip')) {
if(count($arr) > 0) {
// проверяем выбранные файлы
$zip = new ZipArchive(); // подгружаем библиотеку zip
$zip_name = $file_folder.'/'.time().".zip"; // имя файла
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE) {
$error .= "* Sorry ZIP creation failed at this time";
}
$files = '';
foreach($arr as $idWork) {
$fid = dbQ('select wi.fid from JOB_WorkImages wi where wi.IDWork = ' . $idWork . ' AND wi.bAccepted = 1 ORDER BY wi.dResult DESC LIMIT 1')->fid;
$file = file_load($fid);
if (!empty($file)) {
$file = \Drupal::service('file_system')->realpath($file->getFileUri());
if (file_exists($file)) {
$files = $files . $file . ', ';
$zip->addFile($file); // добавляем файлы в zip архив
}
}
}
$numFiles = $zip->numFiles;
$zip->close();
if (file_exists($zip_name)) {
// отдаём файл на скачивание
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
readfile($zip_name);
$error = $zip_name;
// удаляем zip файл если он существует
unlink($zip_name);
} else {
$error .= "* Please select file to zip " . $zip_name . "; num Files in ZIP: " . $numFiles . '; ' . $files;
}
}
} else {
$error .= "* You dont have ZIP extension";
}

Если убрать $zip->addFile($file); // добавляем файлы в zip архив, то видно, что картинки выбираются и существуют по указанному пути, однако в момент выполнения addFile программа вылетает. С чем это может быть связано?

Лучший ответ

Аватар пользователя Orion76 Orion76 13 апреля 2019 в 11:08
1

Посмотрите логи PHP там все написано..
Если в логах почему-то ничего не написано, нужна отладка, или банальным var_dump или xdebug

А вообще, в drupal так уже давно никто не делает,
все уже сделано до нас-)

Например:
https://www.drupal.org/project/media_download_all
https://www.drupal.org/project/file_downloader

Комментарии

Аватар пользователя Orion76 Orion76 13 апреля 2019 в 11:08
1

Посмотрите логи PHP там все написано..
Если в логах почему-то ничего не написано, нужна отладка, или банальным var_dump или xdebug

А вообще, в drupal так уже давно никто не делает,
все уже сделано до нас-)

Например:
https://www.drupal.org/project/media_download_all
https://www.drupal.org/project/file_downloader