파일을 업로드하려면, 당근 form 태그에 method를 post로 해야 하고, enctype을 mutipart/formdata로 해야 합니다. 이건 기본이지요?
mutipart/formdata로 파일을 업로드하는 경우 두가지 주의할 점이 있습니다.
첫번째, 파일은 첫번째 리퀘스트에 다 올라오지 않는다. mutipart/formdata로 지정하면 웹브라우저에서 보내주는 컨텐트(일반 인풋 필드들과 파일)의 양 때문에 첫번째 리퀘스트에서는 총 5kb 정도만 보내줍니다. (이 크기는 리퀘스트의 최대 크기입니다) 그러므로 나머지 데이터는 ReadClient() 메소드를 이용하여 능동적으로 읽어들여야 합니다.
두번째. mutipart/formdata로 지정하면, 그 이름 그대로 form data(인풋들의 값)들을 각각 여러 파트로 나누어 전송합니다. 포맷이 일반적인 post의 인코딩 형식인 urlencoded와는 판이하게 다르므로 웹브로커 VCL이 파싱해주지 못합니다. 그러므로 코딩으로 직접 파싱을 해야 합니다.
이 두가지를 구현한 아주 단순한 코드 예제를 여기 강의실이었던가에서 봤습니다. 하지만, 말씀드렸다시피 아주 단순하게만 구현한 예제이기 때문에, 실무에서 쓰기에는 좀 무리가 있는 코드더군요. 가장 좋은 것은, 이론적인 베이스와 웹브로커 VCL의 소스코드, 그리고 MSDN의 ISAPI 관련 정보를 참고하여 직접 작성하시는 것입니다.
파일을 업로드하려면, 당근 form 태그에 method를 post로 해야 하고, enctype을 mutipart/formdata로 해야 합니다. 이건 기본이지요?
mutipart/formdata로 파일을 업로드하는 경우 두가지 주의할 점이 있습니다.
첫번째, 파일은 첫번째 리퀘스트에 다 올라오지 않는다. mutipart/formdata로 지정하면 웹브라우저에서 보내주는 컨텐트(일반 인풋 필드들과 파일)의 양 때문에 첫번째 리퀘스트에서는 총 5kb 정도만 보내줍니다. (이 크기는 리퀘스트의 최대 크기입니다) 그러므로 나머지 데이터는 ReadClient() 메소드를 이용하여 능동적으로 읽어들여야 합니다.
두번째. mutipart/formdata로 지정하면, 그 이름 그대로 form data(인풋들의 값)들을 각각 여러 파트로 나누어 전송합니다. 포맷이 일반적인 post의 인코딩 형식인 urlencoded와는 판이하게 다르므로 웹브로커 VCL이 파싱해주지 못합니다. 그러므로 코딩으로 직접 파싱을 해야 합니다.
이 두가지를 구현한 아주 단순한 코드 예제를 여기 강의실이었던가에서 봤습니다. 하지만, 말씀드렸다시피 아주 단순하게만 구현한 예제이기 때문에, 실무에서 쓰기에는 좀 무리가 있는 코드더군요. 가장 좋은 것은, 이론적인 베이스와 웹브로커 VCL의 소스코드, 그리고 MSDN의 ISAPI 관련 정보를 참고하여 직접 작성하시는 것입니다.
그럼 이만...
박성일 wrote:
>
> 안녕하세요.
> ISAPI로 자료실을 만들려고 하는데 화일 업로드하는 방법을 모르겠습니다.
>
> ASP같은 경우는 컴포넌트가 있어서 하는걸로 알고 있는데...
>
> 델파이 자체 함수나 컴포넌트로는 어떻게 하는지 모르겠네요.
>
> 게시판은 완성했는데.....
>
> 정말 자료실은 어떻게 할지.....
>
> 그렇다고 자료실만 ASP로 짜기가.... 뭐하고 ...
>
> 아시는 분은 꼭~~~~~~~~~~ 알려주시면 저도 ... 좋은일 많이 하겠습니다.
>
> 그럼 이만....