<!-- 데이터 인코딩형 enctype은 꼭 아래처럼 설정해야 합니다 --> <form enctype="multipart/form-data" action="_URL_" method="POST"> <!-- MAX_FILE_SIZE는 file 입력 필드보다 먼저 나와야 합니다 --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <!-- input의 name은 $_FILES 배열의 name을 결정합니다 --> 이 파일을 전송합니다: <input name="userfile" type="file" /> <input type="submit" value="파일 전송" /> </form>
전역 $_FILES가 PHP 4.1.0부터 존재합니다. (이전 버전에서는 $HTTP_POST_FILES를 사용하십시오) 이 배열은 업로드된 파일 정보를 가지고 있습니다.
예제 폼에서 $_FILES의 내용은 다음과 같습니다. 위 예제 스크립트에서 사용한 파일 업로드 이름 userfile로 표현함에 주의하십시오. 어떠한 이름이라도 가질 수 있습니다.
- $_FILES['userfile']['name']
클라이언트 머신에 존재하는 파일의 원래 이름.
- $_FILES['userfile']['type']
브라우저가 이 정보를 제공할 경우에, 파일의 mime 형식. 예를 들면 "image/gif". 그러나 이 mime 형은 PHP 측에서 확인하지 않으므로 이 값을 신용하지 마십시오.
- $_FILES['userfile']['size']
업로드된 파일의 바이트로 표현한 크기.
- $_FILES['userfile']['tmp_name']
서버에 저장된 업로드된 파일의 임시 파일 이름.
- $_FILES['userfile']['error']
파일 업로드에 관련한 에러 코드. PHP 4.2.0에서 추가되었습니다.
php.ini에서 upload_tmp_dir을 이용하여 다른 위치를 지정하지 않는 한, 파일은 서버의 기본 임시 디렉토리에 저장됩니다. 서버의 기본 디렉토리는 PHP를 실행하는 환경의 환경 변수 TMPDIR을 통해서 변경할 수 있습니다. PHP 스크립트 내부에서 putenv()를 통해서 설정하는 것은 작동하지 않습니다. 물론, 이 환경 변수는 업로드된 파일에 다른 작업을 할 때 사용할 수 있습니다.
<?php
// 4.1.0 이전의 PHP에서는, $_FILES 대신에 $HTTP_POST_FILES를
// 사용해야 합니다.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "파일이 유효하고, 성공적으로 업로드 되었습니다.\n";
} else {
print "파일 업로드 공격의 가능성이 있습니다!\n";
}
echo '자세한 디버깅 정보입니다:';
print_r($_FILES);
print "</pre>";
?>
<form action="" method="post" enctype="multipart/form-data"> <p>그림들: <input type="file" name="pictures[]" /> <input type="file" name="pictures[]" /> <input type="file" name="pictures[]" /> <input type="submit" name="전송" /> </p> </form><?php
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error = UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "data/$name");
}
}
?>
'php' 카테고리의 다른 글
php5isapi.dll (0) | 2011.11.18 |
---|---|
none tread safe 와 thread safe (0) | 2011.11.18 |
APMSETUP후 MySQL사용시 주의사항 (0) | 2011.11.17 |
PHP 한방에 모든 쿠키 제거 (0) | 2011.08.12 |
Date/Time Configuration Options (0) | 2011.07.28 |