[php] PHP를 사용한 파일 업로드와 파일 MIME 타입 변경

이번 포스트에서는 PHP를 사용해서 웹 애플리케이션에 파일을 업로드하는 방법과 업로드된 파일의 MIME 타입을 변경하는 방법에 대해 알아보겠습니다.

파일 업로드

웹 애플리케이션에서 사용자가 파일을 업로드하는 기능은 매우 일반적입니다. PHP에서는 $_FILES 슈퍼글로벌 변수를 사용하여 파일 업로드를 처리할 수 있습니다.

아래는 간단한 파일 업로드 폼과 PHP 스크립트의 예시입니다.

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="업로드">
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $uploads_dir = '/uploads';
  $tmp_name = $_FILES['file']['tmp_name'];
  $name = $_FILES['file']['name'];
  move_uploaded_file($tmp_name, "$uploads_dir/$name");
  echo '파일이 업로드되었습니다.';
}
?>

위의 예시에서는 파일 업로드 폼과 PHP 스크립트를 사용하여 파일 업로드를 처리하는 방법을 보여줍니다.

파일 MIME 타입 변경

업로드된 파일의 MIME 타입을 변경하는 경우에는 finfo_file 함수를 사용하여 파일의 형식을 확인하고, 필요에 따라 MIME 타입을 변경할 수 있습니다.

아래는 MIME 타입을 변경하는 예시입니다.

<?php
$filePath = '/uploads/example.jpg';

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$originalMimeType = finfo_file($finfo, $filePath);

// MIME 타입을 변경
$newMimeType = 'image/png';
header('Content-Type: ' . $newMimeType);

// 변경된 MIME 타입으로 파일 출력
readfile($filePath);
?>

위의 예시에서는 finfo_file 함수를 사용하여 파일의 MIME 타입을 확인하고, header 함수를 사용하여 새로운 MIME 타입으로 파일을 출력하는 방법을 보여줍니다.

이렇게 PHP를 사용하여 파일을 업로드하고, 업로드된 파일의 MIME 타입을 변경할 수 있습니다. 파일 업로드 시 보안에 주의하여야 하며, 업로드된 파일의 MIME 타입을 확인하여 악의적인 파일을 필터링하는 것이 중요합니다.

결론

이번 포스트에서는 PHP를 사용한 파일 업로드와 파일 MIME 타입 변경에 대해 알아보았습니다. 파일 업로드는 웹 애플리케이션에서 사용자가 파일을 업로드하는 기능으로 매우 일반적이며, 파일의 MIME 타입을 변경하는 것은 파일을 다룰 때 유용한 기능 중 하나입니다. 파일 업로드와 MIME 타입 변경을 잘 활용하여 보다 안전하고 다양한 기능을 제공하는 웹 애플리케이션을 개발할 수 있습니다.

참고문헌: PHP 공식 문서