17. File Download


  지금까지 열심히 설명한 내용 중에 하나가 바로 Content-Type이다. 앞에서 HTML문서는 두 부분으로 구성 되었다고 했다. 즉 Header부분과 실제 문서내용.

  다시 말하자면, HTML문서가 웹서버에서 브라우저로 내려올 때 가장 먼저 날아오는 Header부분은 Content-Type: text/html이었다. 그래서 CGI를 작성할 때 항상 이 헤더부분을 먼저 출력해야 했다. 물론 이러한 헤더가 없는 경우 Server Error메세지가 발생한다.(브라우저화면에...)

  대부분의 브라우저가 이 헤더부분을 받으면, 일단 현재 화면의 내용을 지우고 실제 내용을 브라우저내에 뿌릴 준비를 하게 되는 것이다.

  그럼 jpeg파일은 어떻게 할까? 단순하다. Content-Type: image/jpeg라는 헤더를 먼저 보내게 된다. 이렇게 하면 브라우저는 실제 내용을 받아서 그림으로 출력할 준비를 하는 것이다.

  자, 이렇게 볼 때, 브라우저는 헤더내용을 가지고, 다음에 받을 실제 내용을 브라우저내에서 해결할 수 있는지 없는지 판단할 수 있게 된다. 그럼, 해결할 수 없는 경우는 어떻게 할까? 당연히 메시지 박스가 뜨면서 사용자에게 해당파일을 저장할 것인지, 아니면 그 파일을 볼 수 있는 어플리케이션을 구동시킬지 물어보게 된다.

    브라우저   그럼 과연 브라우저가 자체적으로 처리할 수 있는 데이터는 얼마나 될까? Netscape 3.01의 경우는 Option메뉴중 Gerneral Preferences중 helper Tab에서 확인할 수 있다. Action부분에 Browser라고 명기가 되어있으면, 처리할 수 있는 데이터인 것이다. 데이터의 종류는 무척 많지만 실제로 처리할 수 있는 것은 몇 개 안된다는 것을 알 수 있다. 처리할 수 있는 것은 주로, text/html, text/plain, image/jpg, image/gif, image/x-xbitmap등 10개 이내이고, 나머지는 Ask User로 되어있거나, 다른 실행파일들이 적혀 있는 것을 알 수 있다. ( 내비게이터 4.5에서는 Edit메뉴에 Preferences중 Navigator/Applications에 나와 있고 해당 데이터 타입을 어느 프로그램이 실행하는지 나온다. )
  그럼, html, jpeg, gif와 같은 파일이외에 deadfire.ppt라는 파일을 사용자가 다운로드 받을 수 있게 하려면 어떻게 해야 할까? 다음 HTML 코드를 보자.

<A HREF="../doc/deadfire.ppt"> Download This File </A>
  이렇게 실제 파일의 위치를 Link만 하면 사용자가 해당 부분 클릭했을 때, 웹서버에서는 특정한 헤더를 보내게 되며, 이때 브라우저가 이 헤더를 이해하지 못하므로 어떻게 해야 좋을지 사용자에게 물어보게 되는 것이다.( Ask User가 바로 이런걸 말한다. )

  그럼 deadfire.ppt일 때, 어떤 헤더가 내려오는가? Content-Type: application/x-ppt가 내려오게 된다. 다른 파일들 즉, HWP의 경우는 Content-Type: application/x-hwp가 된다.

  즉, 어떠한 파일이든 간에 그냥 링크만 시켜주면 다운 받을 수 있는 것이다. 물론 해당 파일이 Document Directory에 있어야 하고, 당연히 read권한이 있어야 한다.

  자, 여기까지는 아주 쉬운 내용이다. 이제 이걸 CGI와 접목시켜보자.

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 활용
브라우저구분
환경변수LIST
클라이언트풀
서버푸쉬
Form Mail
진행현황보기
Cookie
MD5
File Download
SSI
Redirection
File Upload
GD1.2
Database
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master