@zeni1agent

Как вывести все картинки из zip архива?

Кто нибудь знает как вывести все картинки из zip архива на страницу браузера

единственное что я нашел это
<?php
 
//Создаём объект
$zip = new ZipArchive();   
 
//Окрываем архив archive2.zip
if ($zip->open('image.zip') !== TRUE) {
    die ("Не могу открыть архив");
}
 
//Получаем номер файла в архиве archive2.zip
$numFiles = $zip->numFiles;
 
//Переборираем списк файлов
for ($i=0; $i<$numFiles; $i++) {
  
    //Получаем подробную информацию записи определеную её индексом
    print_r($zip->statIndex($i));
	
	 echo '<img src="URL" />';
     
}
 
//закрываем архив
$zip->close();
 
?>


Мне нужно получить все картинки так как я не могу знать заранее сколько их будет.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
profesor08
@profesor08 Куратор тега PHP
Вариант 1. Распакуй архив, вставь в src путь к файлу.

Вариант 2. Пробегись по файлам, укажи в src номер файла в архиве или любой другой уникальный идентификатор файла. Далее, когда откроется страница в браузере, браузер обратится по получившейся ссылке в src, тебе останется обработать эту ссылку, снова открыть архив, получить содержимое файла и отправить его браузеру.

Вариант 3: В своем же коде получи содержимое файла, сгенерируй dataURI, вставь в src.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега PHP
Добрый вечер.
Вот рабочий пример, распаковка архива с изображениями.
Сделано для yii2, но Вы, я уверен, сможете переделать под свои нужды
$unzip = new ZipArchive();
        if($unzip->open($file[0]->tempName) === true){
            for ($i = 0; $i < $unzip->numFiles; $i++){
                $filename = $unzip->getNameIndex($i);
                $fileinfo = pathinfo($filename);
                $new_title = Yii::$app->security->generateRandomString();
                if(copy('zip://' . $file[0]->tempName . '#' . $filename, Yii::getAlias('@webroot') . '/' . $path . '/' . $new_title . '.' . $fileinfo['extension'])){
                    $this->saveImage($path, $new_title . '.' . $fileinfo['extension'], $this->id);
                }
            }
            $unzip->close();
            return true;
        }
        else{
            return false;
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы