PHP 튜토리얼

PHP 홈 PHP 소개 PHP 설치 PHP 구문 PHP 주석 PHP 변수 PHP 에코 / 인쇄 PHP 데이터 유형 PHP 문자열 PHP 숫자 PHP 수학 PHP 상수 PHP 연산자 PHP If...Else...Elseif PHP 스위치 PHP 루프 PHP 함수 PHP 배열 PHP 슈퍼글로벌 PHP 정규식

PHP 양식

PHP 양식 처리 PHP 양식 유효성 검사 PHP 양식 필요 PHP 양식 URL/이메일 PHP 양식 완성

PHP 고급

PHP 날짜 및 시간 PHP 포함 PHP 파일 처리 PHP 파일 열기/읽기 PHP 파일 생성/쓰기 PHP 파일 업로드 PHP 쿠키 PHP 세션 PHP 필터 PHP 필터 고급 PHP 콜백 함수 PHP JSON PHP 예외

PHP OOP

PHP OOP란? PHP 클래스/객체 PHP 생성자 PHP 소멸자 PHP 액세스 수정자 PHP 상속 PHP 상수 PHP 추상 클래스 PHP 인터페이스 PHP 특성 PHP 정적 메서드 PHP 정적 속성 PHP 네임스페이스 PHP 반복 가능

MySQL 데이터베이스

MySQL 데이터베이스 MySQL 연결 MySQL 생성 DB MySQL 테이블 생성 MySQL 삽입 데이터 MySQL 마지막 ID 가져오기 MySQL은 다중 삽입 MySQL 준비 MySQL 선택 데이터 MySQL 어디 MySQL 주문 기준 MySQL 데이터 삭제 MySQL 업데이트 데이터 MySQL 제한 데이터

PHP XML

PHP XML 파서 PHP SimpleXML 파서 PHP SimpleXML - 가져오기 PHP XML 국외 거주자 PHP XML DOM

PHP - AJAX

AJAX 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 라이브 검색 AJAX 투표

PHP 예제

PHP 예제 PHP 컴파일러 PHP 퀴즈 PHP 연습 PHP 인증서

PHP 참조

PHP 개요 PHP 배열 PHP 캘린더 PHP 날짜 PHP 디렉토리 PHP 오류 PHP 예외 PHP 파일 시스템 PHP 필터 PHP FTP PHP JSON PHP 키워드 PHP 라이브러리 XML PHP 메일 PHP 수학 PHP 기타 PHP MySQLi PHP 네트워크 PHP 출력 제어 PHP 정규식 PHP SimpleXML PHP 스트림 PHP 문자열 PHP 변수 처리 PHP XML 파서 PHP 우편번호 PHP 시간대

PHP 파일 업로드


PHP를 사용하면 서버에 파일을 쉽게 업로드할 수 있습니다.

그러나 쉬운 일에는 위험이 따르므로 파일 업로드를 허용할 때는 항상 주의하십시오!


"php.ini" 파일 구성

먼저 PHP가 파일 업로드를 허용하도록 구성되어 있는지 확인합니다.

"php.ini" 파일에서 file_uploads지시어를 검색하고 On으로 설정합니다.

file_uploads = On

HTML 양식 만들기

다음으로 사용자가 업로드할 이미지 파일을 선택할 수 있는 HTML 양식을 만듭니다.

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

위의 HTML 양식에 따라야 할 몇 가지 규칙:

  • 양식이 method="post"를 사용하는지 확인하십시오.
  • 양식에는 enctype="multipart/form-data" 속성도 필요합니다. 양식을 제출할 때 사용할 콘텐츠 유형을 지정합니다.

위의 요구 사항이 없으면 파일 업로드가 작동하지 않습니다.

기타 주의 사항:

  • <input> 태그의 type="file" 속성은 입력 필드를 파일 선택 컨트롤로 표시하며, 입력 컨트롤 옆에 "찾아보기" 버튼이 있습니다.

위의 형식은 다음에 생성할 "upload.php"라는 파일로 데이터를 보냅니다.



업로드 파일 PHP 스크립트 만들기

"upload.php" 파일에는 파일 업로드를 위한 코드가 포함되어 있습니다.

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

PHP 스크립트 설명:

  • $target_dir = "uploads/" - 파일이 저장될 디렉토리를 지정합니다.
  • $target_file은 업로드할 파일의 경로를 지정합니다.
  • $uploadOk=1은 아직 사용되지 않음(나중에 사용됨)
  • $imageFileType은 파일의 파일 확장자를 보유합니다(소문자).
  • 다음으로 이미지 파일이 실제 이미지인지 가짜 이미지인지 확인합니다.

참고: "upload.php" 파일이 있는 디렉토리에 "uploads"라는 새 디렉토리를 생성해야 합니다. 업로드된 파일이 거기에 저장됩니다.


파일이 이미 존재하는지 확인

이제 몇 가지 제한 사항을 추가할 수 있습니다.

먼저 "업로드" 폴더에 파일이 이미 존재하는지 확인합니다. 그렇다면 오류 메시지가 표시되고 $uploadOk는 0으로 설정됩니다.

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

파일 크기 제한

위 HTML 양식의 파일 입력 필드 이름은 "fileToUpload"입니다.

이제 파일의 크기를 확인하려고 합니다. 파일이 500KB보다 크면 오류 메시지가 표시되고 $uploadOk가 0으로 설정됩니다.

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

파일 형식 제한

아래 코드는 사용자가 JPG, JPEG, PNG 및 GIF 파일만 업로드할 수 있도록 허용합니다. 다른 모든 파일 형식은 $uploadOk를 0으로 설정하기 전에 오류 메시지를 표시합니다.

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

파일 업로드 PHP 스크립트 완료

이제 완전한 "upload.php" 파일은 다음과 같습니다.

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

완전한 PHP 파일 시스템 참조

파일 시스템 기능에 대한 전체 참조를 보려면 전체 PHP 파일 시스템 참조 로 이동하십시오 .