PHP를 통해 폼으로 파일을 업로드하는 방법을 알아보겠다.
폼 작성 방식은 다른 폼과 크게 차이가 없으나 중요한 점이 하나 있다. 다음 코드를 살펴보자.
위 코드에서 가장 중요한 부분은 form태그 바로 옆에 있는 enctype='multipart/form-data'부분이다.
이 부분이 없으면, $_POST 변수로 파일명만 넘어가게 된다.
만약 $_FILES변수가 NULL값이고, $_POST변수에 업로드한 파일명이 나타난다면, enctype 설정이 잘못된 경우이다.
만약 고쳤는데도 불구하고 계속 이러한 현상이 발생한다면, 페이지에 재접속하여 파일을 업로드해보기 바란다.
업로드가 정상적으로 이루어졌다면 print_r()함수를 통해서 다음과 같은 결과를 얻을 수 있다.
이 파일은 tmp_name이라는 경로로 임시 저장이 되는데, 이 파일을 영구저장하기 위해서는 move_uploaded_file()함수를 사용하여 별도의 경로에 저장을 하여야 한다.
위와 같이 지정하면 사이트 루트에 파일이 저장된다.
폼 작성 방식은 다른 폼과 크게 차이가 없으나 중요한 점이 하나 있다. 다음 코드를 살펴보자.
<form enctype='multipart/form-data' action='test.php' method='post'>
<p>
<label>File: </label><input type='file' name='file' /><br />
<input type='submit' name='upload' />
</p>
</form>
<p>
<label>File: </label><input type='file' name='file' /><br />
<input type='submit' name='upload' />
</p>
</form>
위 코드에서 가장 중요한 부분은 form태그 바로 옆에 있는 enctype='multipart/form-data'부분이다.
이 부분이 없으면, $_POST 변수로 파일명만 넘어가게 된다.
만약 $_FILES변수가 NULL값이고, $_POST변수에 업로드한 파일명이 나타난다면, enctype 설정이 잘못된 경우이다.
만약 고쳤는데도 불구하고 계속 이러한 현상이 발생한다면, 페이지에 재접속하여 파일을 업로드해보기 바란다.
업로드가 정상적으로 이루어졌다면 print_r()함수를 통해서 다음과 같은 결과를 얻을 수 있다.
Array
(
[file] => Array
(
[name] => test.gif
[type] => image/gif
[tmp_name] => /tmp/phpmTiHI4
[error] => 0
[size] => 1596
)
)
(
[file] => Array
(
[name] => test.gif
[type] => image/gif
[tmp_name] => /tmp/phpmTiHI4
[error] => 0
[size] => 1596
)
)
이 파일은 tmp_name이라는 경로로 임시 저장이 되는데, 이 파일을 영구저장하기 위해서는 move_uploaded_file()함수를 사용하여 별도의 경로에 저장을 하여야 한다.
$path = $_SERVER['DOCUMENT_ROOT'].$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $path);
첫 번째 인수가 임시 파일의 경로, 두 번째 인수가 파일을 영구 저장할 경로이다.move_uploaded_file($_FILES['file']['tmp_name'], $path);
위와 같이 지정하면 사이트 루트에 파일이 저장된다.
'WebApp > PHP' 카테고리의 다른 글
PHP를 이용한 Header 페이지 이동(리다이렉트Redirect) (0) | 2010.08.13 |
---|---|
foreach 배열 반복 (0) | 2010.08.12 |
다차원배열의 구성 (0) | 2010.06.26 |
array_merge() (0) | 2010.06.25 |
Form과 Input 태그로 배열 넘기기 (0) | 2010.06.24 |