28. File Upload


  웹 프로그래밍을 하면 항상 문제가 되는 것이 몇가지 있다.

  대표적으로 다음과 같은 것들은 항상 프로젝트 시작전에 검토를 하곤 한다.
  • 한글 인코딩 문제
  • 데이터 베이스 연결
  • 로그인 처리 방법
  • File Upload
  각 언어별로 이러한 것들을 많이 지원하고 있다. 각각의 경우 인터넷을 찾아보면, 다양한 해결 방안들이 공개되어 있다. Window CGI에서는 한글인코딩의 문제는 특별히 없다. 데이터 베이스중 MDB는 앞절에서 해봤고, 로그인의 경우는 UNIX상에서 MD5로 해결했던 방식을 그대로 사용하면 된다.   File Upload의 경우 ASP와 Unix용 C만 보면,

  • ASP : MS에서 오픈한 IIS용 File Upload 소스 : Download
  • Unix C : 본인이 만든 C 소스 : Download
  문제는 Unix용 C로 작성한 것을 그대로 실행해 보면 알겠지만, ASC 타입만 제대로 작동이 된다는 것을 알수 있다. 원인은 MFC에서 stdin이 기본적으로 Text모드라는 점이다.

  따라서, Binary데이터가 올라오는 경우에 Null값이 분명이 존재할 수 있는데, 이때부터 제대로 작동하지 않게 되는 것이다.
    ASC VS BIN   UNIX에서는 모드의 구분이 없다. 그러나, Window계열에서는 그 차이가 분명하다. ASC타입 즉, TEXT타입과 Binary타입인 BIN타입이 구분되므로 주의하자.
  따라서, 이를 해결하기 위해서는 stdin을 Binary모드로 전환해야 한다. _setmode()함수가 바로 이때 사용할 수 있는 함수이다. 이 함수를 위해서는 io.h, fcntl.h파일을 Include해야 한다.

#include <io.h>
#include <fcntl.h>

_setmode(_fileno(stdin), _O_BINARY);


  자 stdin에서 읽어들이기 바로 직전에 호출하여 사용하면 Unix에서 사용하던 C 소스도 잘 작동한다는 것을 알 수 있다.

  이번에는 기존에 작성된 본인이 작성한 UNIX용 C언어로 개발된 File Upload를 클래스로 변경해보도록 하겠다.

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

CGI with MFC
윈도우용 CGI
웹서버 설정
작성 방법
작동 원리
     - GET METHOD
     - POST METHOD
MDB사용하기
File Upload
앞으로...

Copyright ⓒ 1997 ~, Deadfire Program Master