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 마이클
xFacility/Documents2010. 10. 20. 14:45
xFacility는 육하원칙에 의거하여 데이터를 보관하기 위해 일정한 데이터 형식을 갖고 있다.
C에서 데이터 형식을 혼동하여 사용하면 프로그램이 예기치 못한 오류를 발생하는 것처럼,
xFacility에서도 형식에 맞게 데이터를 입력하지 않으면 오류를 발생한다.

데이터명[who][#][항목명]
데이터명[how][#][항목명]
데이터명[what][#][항목명]
데이터명[where][#][항목명]
데이터명[when][#][항목명]
데이터명[why][#][항목명]

'xFacility > Documents' 카테고리의 다른 글

어플리케이션 메뉴  (0) 2010.12.02
xf_language 변수  (0) 2010.08.23
xFacility 변수 규칙  (0) 2010.08.07
문장 구조  (0) 2010.06.29
데이터 형식  (0) 2010.05.17
Posted by 마이클
WebApp/Instruction2010. 10. 4. 14:42
1990년대만 하더라도 학교에서 무엇에 대해 조사해오라는 숙제가 떨어지면, 방과후에 도서관을 찾거나 백과사전이 있는 친구집에 방문하여 그것을 얻어보며 과제를 했었다. 그렇게 책장 하나하나를 넘겨가며 내가 원하던 자료를 찾던 때와는 달리 십수년이 흐른 지금은 인터넷이라는 정보의 우물에서 간단히 두레박을 내려 퍼올리기만 하면 되는 시대가 되었다.

만약 자동차에 대해서 알고 싶다면 네이버나 구글 같은 검색엔진에 자동차라는 키워드만 입력하면 된다. 자동차 정의에 관한 백과사전 사이트부터 중고차 매매를 하고 있는 카페의 글까지 자동차에 관한 모든 것을 찾아준다. 하지만 이렇게 검색을 한다고 해서 우리가 자동차에 대한 정보를 올바르게 습득하고 있는가에 대해서는 아직 의문점이 남는다.

바로 그 까닭은 인터넷이 하이퍼링크 기반이라는 점에 있다. 하이퍼링크는 참조와 역참조라는 연결성만이 있을 뿐 순서와 그 체계성에 대해서는 치명적인 결함이 존재하기 때문이다.

자동차에 대한 올바른 이해를 위해서는 그 앞에 선행되어야 하는 지식들-내연기관, 철강산업 등-에 대한 이해가 필요한데, 인터넷에는 그저 키워드에 의한 연관관계로 이들 자료가 조직되어 있을 뿐, 자동차를 직접 만들어 볼 수 있을 정도-캠, 내연기관 등에 대한 이해를 완료한 수준-까지의 체계적 학습은 어렵다는 것이다.

지난 몇 년간 블로그가 엄청난 유행을 거뒀다. 블로그는 글의 시간흐름(시간의 연결성)을 기반으로 페이지를 구성하는 하나의 방식이다. 시간의 흐름을 기반으로 하기 때문에 기존의 지식에 보충이 되는 새로운 소식을 접하고자 하는 사람에게는 굉장히 편리한 방식이다. 그러나 (시간의) 연결성을 강조한 만큼 지식의 체계적 전달이라는 점에 대해서는 취약할 수 밖에 없다.

만약 수학과 관련된 블로그를 보고 있다고 하자. 작성 시간에 따라 삼각함수에 대한 글 뒤에 바로 덧셈에 대한 글이 나올 수도 있고 최근에 발표된 난제 풀이에 관한 논문이 덧셈에 뒤이어 나올 수도 있다. 해당 분야에 대한 기초 지식이 있는 사람들은 문제가 없겠으나, 해당 사이트를 통해 수학을 덧셈부터 곱셈까지 학습하려는 목적으로 방문했다면 해당 자료가 있더라도 체계적 학습에 어려움이 있을 것이다.

때문에 블로그를 일정 테마(나름대로의 체계성)로 구성하지 않는 이상, 검색 유입이 아닌 고정 방문자를 유치하기 힘들다. 이제 블로그를 벗어나 해당분야에 대한 기초지식이 없는 사람도 쉽게 정보를 이해할 수 있는 새로운 페이지 구성방식을 고민할 때가 온 것이다.

앞으로의 사이트 구성방식은 연결성과 체계성을 모두 갖춘 구조가 되어야 한다. 체계성을 확립하기 위해서는 사이트의 뼈대가 되는 메인 메뉴를 인과관계를 따져 논리적으로 배치해야 한다. 또한 인터넷의 장점인 연결성을 확보하기 위해 컨텐츠 하단에 관련항목에 대한 링크를 각주처럼 모아야 한다. 이렇게 두 가지 성질을 확보할 때 좋은 사이트로서 많은 방문자의 사랑을 받을 수가 있을 것이다.
Posted by 마이클