[fileupload0.php]

html tag enctype="multipart/form-data" 

파일을 업로드 할때 파일속 데이타 모두 encode해서 넘겨야 원본파일을 넘길수 있다. 

그래서 enctype="multipart/form-data" 로 지정해서 넘김.

<form enctype="multipart/form-data" action="fileupload1.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="4000000" />
Send File: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>



[fileupload1.php]

php에서 file upload 시키는 함수는 move_uploaded_file


아래는 업로드시 에러발생했을 경우 에러 메시지를 case별로 적어봤다.

bool move_uploaded_file ( string $Filename , string $Destination )


실제 fileupload0에서 submit되면서 fileupload1으로 넘어올때.

$_FILES 에는 업로드 성공여부(temp폴더에 임시 업로드됨)가 모두 담겨 넘어온다.

그 후 temp폴더에서 "move_uploaded_file" 메소드를 이용 개발자가 정의한 폴더로 move시키는 것이다.


$_FILES info : Array

(

    [userfile] => Array

        (

            [name] => uploaded1.jpg

            [type] => image/jpeg

            [tmp_name] => C:\Windows\Temp\phpFD71.tmp

            [error] => 0

            [size] => 68985

        )

)


<?php

$uploaddir = $_SERVER['DOCUMENT_ROOT']."/admin1/test/img/";

print_r($uploadfile = $uploaddir.basename($_FILES['userfile']['name']));

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File was successfully uploaded.\n";
} else {
echo "FileUpload was failed.\n";
}

echo 'info:';
print_r($_FILES);
echo "<br />";

if(UPLOAD_ERR_OK !=$_FILES['userfile']['error'])
{

switch ($_FILES['userfile']['error']) {
case UPLOAD_ERR_INI_SIZE:
$message = "The uploaded file exceeds the upload_max_filesize directive in php.ini";
break;
case UPLOAD_ERR_FORM_SIZE:
$message = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form";
break;
case UPLOAD_ERR_PARTIAL:
$message = "The uploaded file was only partially uploaded";
break;
case UPLOAD_ERR_NO_FILE:
$message = "No file was uploaded";
break;
case UPLOAD_ERR_NO_TMP_DIR:
$message = "Missing a temporary folder";
break;
case UPLOAD_ERR_CANT_WRITE:
$message = "Failed to write file to disk";
break;
case UPLOAD_ERR_EXTENSION:
$message = "File upload stopped by extension";
break;
default:
$message = "Unknown upload error";
break;
}

echo $message;

}
print "</pre>";
?>


자 이렇게 해서 fileupload0.php => fileupload1.php 순서로 실행되면 

아래의 로그를 받아볼 수 있다.

화일은 temp로 임시 저장된 후 다시 최초 지정한 경로로 옮겨간다. 

'프로그래밍 > PHP' 카테고리의 다른 글

unlink(=delete) 메소드 이용하기  (0) 2018.04.22
directory entry 읽어 파일리스트업  (0) 2018.04.20
파일 업로드(move_uploaded_file)  (0) 2018.04.14
fileupload 에러메시지 설명  (0) 2018.04.14
angularJS 사용하기  (0) 2018.04.01
json 데이타 사용하기  (0) 2018.03.28

+ Recent posts