[php] PHP에서 ZIP 파일을 업로드하고 압축 해제하기

이번에는 PHP를 사용하여 웹 애플리케이션에 ZIP 파일을 업로드하고 이를 압축 해제하는 방법에 대해 알아보겠습니다.

1. ZIP 파일 업로드하기

먼저, HTML 폼을 생성하여 사용자가 ZIP 파일을 업로드할 수 있도록 만들겠습니다. 아래는 HTML 폼의 예시입니다.

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="zipFile">
  <input type="submit" value="압축 해제">
</form>

위의 코드에서 enctype="multipart/form-data"는 파일 업로드를 위한 설정이며, input 요소의 typefile인 것에 주의하세요.

이제 PHP 파일(upload.php)에서 업로드된 ZIP 파일을 처리할 차례입니다.

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $targetDir = "uploads/";
  $targetFile = $targetDir . basename($_FILES["zipFile"]["name"]);
  $uploadOk = 1;
  $zipFileType = pathinfo($targetFile, PATHINFO_EXTENSION);

  // 파일 유효성 검사
  if ($zipFileType != "zip") {
    echo "ZIP 파일만 허용됩니다.";
    $uploadOk = 0;
  }

  // 파일 업로드
  if ($uploadOk == 0) {
    echo "파일 업로드 실패!";
  } else {
    if (move_uploaded_file($_FILES["zipFile"]["tmp_name"], $targetFile)) {
      echo "파일이 업로드되었습니다.";
    } else {
      echo "파일 업로드에 실패했습니다!";
    }
  }
}
?>

2. ZIP 파일 압축 해제하기

이제 업로드된 ZIP 파일을 압축해제하여 원하는 디렉터리에 파일을 추출할 것입니다.

<?php
$zip = new ZipArchive;
if ($zip->open($targetFile) === TRUE) {
  $extractPath = "extracted_files/";
  $zip->extractTo($extractPath);
  $zip->close();
  echo 'ZIP 파일이 성공적으로 압축 해제되었습니다.';
} else {
  echo 'ZIP 파일을 열 수 없습니다.';
}
?>

위의 코드에서 ZipArchive 클래스를 사용하여 ZIP 파일을 열고, extractTo 메소드를 사용하여 원하는 디렉터리에 파일을 추출합니다.

이제 PHP를 사용하여 ZIP 파일을 업로드하고 압축 해제하는 방법에 대해 알아보았습니다. 이를 통해 사용자는 웹 애플리케이션을 통해 ZIP 파일을 손쉽게 업로드하고 압축 해제할 수 있습니다.

참고 자료