댓글 목록

PHP 파일 업로드

페이지 정보

작성자 운영자 작성일 18-03-15 17:14 조회 1,927 댓글 0

동영상 강좌는 유튜브 채널 '웹학교'를 이용하시기 바랍니다.

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"파일에는 파일 업로드를 위한 코드가 들어 있습니다 :


$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 이미지파일인지 확인
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "이미지 파일이 아닙니다.";
        $uploadOk = 0;
    }
}


PHP 스크립트 설명 :

  • $target_dir = "uploads/" - 파일이 저장 될 디렉토리를 지정합니다.
  • $ target_file은 업로드 할 파일의 경로를 지정합니다.
  • $ uploadOk = 1은 아직 사용되지 않았습니다 (나중에 사용됩니다).
  • $ imageFileType은 파일의 파일 확장명을 포함합니다 (소문자로).
  • 이미지 파일이 실제 이미지인지 또는 가짜 이미지인지 확인하십시오.

** "upload.php"파일이 있는 디렉토리에 "uploads"라는 새 디렉토리를 만들어야 합니다. 업로드 된 파일은 여기에 저장됩니다.


파일이 이미 있는지 확인하십시오. 


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


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


if (file_exists($target_file)) {
    echo "같은 파일이 존재합니다.";
    $uploadOk = 0;
}


파일 크기 제한 


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


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


if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "파일 크기가 커서 업로드 할 수 없습니다.";
    $uploadOk = 0;
}


파일 형식 제한 


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


if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "JPG, JPEG, PNG 그리고 GIF 파일만 업로드할 수 있습니다.";
    $uploadOk = 0;
}

전체 PHP 스크립트 


$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// 이미지파일인지 확인
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "이미지 파일이 아닙니다.";
        $uploadOk = 0;
    }
}
// 같은 파일이 있는지 확인
if (file_exists($target_file)) {
    echo "같은 파일이 존재합니다.";
    $uploadOk = 0;
}
// 파일 크기 제한
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "파일 크기가 커서 업로드 할 수 없습니다.";
    $uploadOk = 0;
}
// 허용된 이미지 파일 포멧 확인
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "JPG, JPEG, PNG 그리고 GIF 파일만 업로드할 수 있습니다.";
    $uploadOk = 0;
}
// $uploadOk = 0 이면 에러 출력
if ($uploadOk == 0) {
    echo "파일을 업로드할 수 없습니다.";
// 파일 업로드
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "업로드중에 에러가 발생했습니다.";
    }
}


그누보드/영카트


/adm/contentformupdate.php

/adm/faqmasterformupdate.php

/adm/member_form_update.php


/bbs/qawrite_update.php

/bbs/register_form_update.php

/bbs/write_update.php



댓글목록 0

등록된 댓글이 없습니다.