[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로 임시 저장된 후 다시 최초 지정한 경로로 옮겨간다.
