WebApp/PHP2010. 10. 21. 01:33
PHP를 통해 폼으로 파일을 업로드하는 방법을 알아보겠다.

폼 작성 방식은 다른 폼과 크게 차이가 없으나 중요한 점이 하나 있다. 다음 코드를 살펴보자.
<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>

위 코드에서 가장 중요한 부분은 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
        )
)

이 파일은 tmp_name이라는 경로로 임시 저장이 되는데, 이 파일을 영구저장하기 위해서는 move_uploaded_file()함수를 사용하여 별도의 경로에 저장을 하여야 한다.

$path = $_SERVER['DOCUMENT_ROOT'].$_FILES['file']['name'];
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
Posted by 마이클