최신 웹 개발 튜토리얼
 

PHP 5 파일 업로드


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 양식에 대해 다음과 같이하십시오

  • 양식 방법을 사용하는지 확인 = "POST"
  • 이 양식은 또한 필요 following = "다중 / 폼 데이터"에 enctype : 속성을. 이 양식을 제출 할 때 사용할 내용 유형을 지정합니다

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

다른 가지주의 사항 :

  • type="file" 의 속성 <input> 태그는 함께 파일 선택 제어와 입력 필드를 나타낸다 "Browse" 버튼 입력 제어 옆

양식 위라는 파일에 데이터를 전송 "upload.php" 우리가 다음이 생성됩니다.


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

"upload.php" 파일은 파일을 업로드하기위한 코드를 포함 :

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = 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 아직 사용되지 않는다 (will be used later)
  • $ imageFileType 파일의 파일 확장자를 보유하고
  • 이미지 파일은 실제 이미지 또는 가짜 이미지 인 경우 다음 확인

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


파일이 이미 존재하는 경우 확인

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

파일이 이미 존재하는 경우 첫째, 우리는 확인합니다 "uploads" 폴더에 있습니다. 가 설치되어있는 경우, 오류 메시지가 표시되며, $ uploadOk은 0으로 설정됩니다 :

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

제한 파일 크기

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

이제, 우리는 파일의 크기를 확인하고 싶습니다. 파일이 500킬로바이트보다 큰 경우, 오류 메시지가 표시되며, $ uploadOk은 0으로 설정됩니다 :

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

제한 파일 형식

단지 아래 코드는 사용자가 JPG, JPEG, PNG 및 GIF 파일을 업로드 할 수 있습니다. 다른 모든 파일 형식은 0 $ uploadOk를 설정하기 전에 오류 메시지를 제공합니다 :

// 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 = 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 ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

PHP 파일 시스템 참조를 완료

파일 시스템 기능의 완전한 참고로, 우리의 완전한 이동 PHP 파일 시스템 참조 .