Данный скрипт позволяет распаковать загруженный на сервер архив в заданную папку.

Скрипт распаковки загруженных на сервер файлов

Данный скрипт позволяет распаковать загруженный на сервер архив в заданную папку.

Код функции распаковки:

/**
* Распаковка архива
*
* @param string $source - Путь к файлу архива 
* @param string $dest   - куда извлекать
*
* @return bool 
*/
function ar_unpack( $source, $dest ) 
{

  $zip = new ZipArchive;
  $is  = $zip -> open( $source );
  if( $is ) {
      $zip -> extractTo( $dest );
      $zip -> close();
  } else {
      return false;
  }

  return true;
}

Код скрипта:

if(isset($_POST['load'])) 
{
  // файл архива, загруженный на сервер
  $archive = $_FILES['archive'];

  // путь куда будет сохраняться архива
  $dest = getcwd() . '/' . $archive['name'];

  // пытаемся переместить загруженный архив из временной папки в нужную 
  if (!move_uploaded_file($archive['tmp_name'], $dest)) {
    print "Невозможно загрузить {$archive['name']} ";
  } 
  else {
    print "Временная папка {$archive['tmp_name']}</br>";
    print "Файл <b>{$archive['name']}</b> успешно загружен: <b>{$dest}</b><br/>";

    // даем имя папке, в которую будем извлекать файлы
    $dir = substr( $archive['name'], 0, strrpos( $archive['name'], '.' ) );

    // распаковываем архив и даем ссылку на файл index.php
    // для доступа к распакованному содержимому
    if( ar_unpack( $dest, $dir ) ) {
        print "
            Архив  <b>{$dest}</b> успешно распакован в папку <b>{$dir}</b><br/>
            <a href = '{$dir}/index.php'>{$dir}</a>
        ";
    }
  }

}

Код формы:

<p>
  <h3>Загрузка архива</h3>
</p>
<p>
  <form action = "" method = "post" enctype = "multipart/form-data">
    <p>
      <input type = "file" name = "archive" />
    </p>
    <p>
      <input type = "submit" name = "load" value = "Загрузить" />
    </p>
  </form>
</p>

Таким образом, с помощью данного скрипта можно распаковать архив на сервере в PHP.