How to alter this code correctly so that you can upload not pictures, but .rar .zip archives?

The form

<form action='../upload.php' method='post' enctype='multipart/form-data'> <input name='file[]' type='file' multiple='true' /> <input type='submit' value='Загрузить скриншоты' /> </form> 

And php

  <?php $pic_weight = 950; $pic_height = 535; if (isset($_FILES)) { //пролистываем весь массив изображений по одному $_FILES['file']['name'] as $k=>$v foreach ($_FILES['file']['name'] as $k=>$v) { //директория загрузки $uploaddir = "files/"; //новое имя изображения $apend=date('YmdHis').rand(100,1000).'.png'; //путь к новому изображению $uploadfile = "$uploaddir$apend"; //Проверка расширений загружаемых изображений if($_FILES['file']['type'][$k] == "image/png" || $_FILES['file']['type'][$k] == "image/jpg" || $_FILES['file']['type'][$k] == "image/jpeg") { //черный список типов файлов $blacklist = array(".php", ".phtml", ".php3", ".php4", ".txt", ".zip", ".html"); foreach ($blacklist as $item) { if(preg_match("/$item\$/i", $_FILES['file']['name'][$k])) { echo "Нельзя загружать скрипты."; exit; } } //перемещаем файл из временного хранилища if (move_uploaded_file($_FILES['file']['tmp_name'][$k], $uploadfile)) { //получаем размеры файла $size = getimagesize($uploadfile); //проверяем размеры файла, если они нам подходят, то оставляем файл if ($size[0] < $pic_weight && $size[1] < $pic_height) { //.....код //я обычно заношу пути к изображениям в бд //.....код echo "<center><br>Файл загружен. ( http://upload.creamoo.ru/$uploadfile ) <- ваш путь к файлу.</center>"; } //если размеры файла нам не подходят, то удаляем файл unlink($uploadfile); else { echo "<center><br>Размер пикселей превышает допустимые нормы (945 X 530) . </center>"; unlink($uploadfile); } } else echo "<center><br>Файл не загружен, вернитесь и попробуйте ещё раз.</center>"; } else echo "<center><br>Можно загружать только изображения в форматах jpg, jpeg и png.</center>"; } } ?> 

    2 answers 2

    It is necessary to upload all the pictures into a folder, and then archive this folder. There is a lot of useful information. Use ZipArchive (PHP 5> = 5.2.0, PHP 7, PECL zip> = 1.1.0)

    A simple example:

     $nameFile = $_FILES['file']['name']; $tmpName = $_FILES['file']['tmp_name']; $download_folder = './files/'; $zip = new ZipArchive(); $fileconpress = $download_folder.$nameFile.".zip"; $conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE); if ($conpress === true) { $zip->addFile($tmpName); $zip->close(); echo $fileconpress."<br/>"; echo "Успешно сохранилось! "; } else echo "Ошибка"; 
       if (isset($_FILES)) { foreach ($_FILES['file']['name'] as $k=>$v) { $uploaddir = "files/"; $apend=date('YmdHis').rand(1000,9999); if ($_FILES['file']['type'][$k] == "application/zip") { $apend .=".zip"; } elseif ($_FILES['file']['type'][$k] == "application/x-rar-compressed") { $apend .=".rar"; } $uploadfile = "$uploaddir$apend"; if($_FILES['file']['type'][$k] == "application/zip" || $_FILES['file']['type'][$k] == "application/x-rar-compressed") { if (move_uploaded_file($_FILES['file']['tmp_name'][$k], $uploadfile)) { echo "<center><br>Файл загружен. ( http://upload.creamoo.ru/$uploadfile ) <- ваш путь к файлу.</center>"; } else echo "<center><br>Файл не загружен, вернитесь и попробуйте ещё раз.</center>"; } else echo "<center><br>Можно загружать только изображения в форматах zip и rar.</center>"; } }