> 자바에서 파일을 업로드 받을때 post방식으로 받습니다.
> form에서 ENCTYPE을 multipart/form-data로 받아서
> 서블릿에서 처리를 하면 되거든요.
부끄~~ 잠시 착각했습니다. Multipart/form-data 로 당연히 받아야지요.
하지만 이것의 처리는 다른 텍스트 방식으로 처리 하지는 않는다는 의미였습니다.
PHP 의 경우 파일을 upload 받으면 그 업로드한 파일의 정보를 위한 name/size 라는 변수가 따로 생성되지요.
이들을 파일로 일단 처리 한 후에 이것을 BLOB 자료형 내로 넣는 방법이 있을 것 같습니다. 참고로 BLOB 자료형의 경우 자료마다 하나의 파일을 따로 생성한다는 것입니다. 이것은 PostgreSQL 에서 large object 를 처리시에도 마찬가지이지요.
> 서블릿에서 일반 폼에서 입력받은 데이타와 파일을 첨부한 데이타를
> 파싱해야 하지만
> 일단 서블릿 에서 처리는 하였는데
> 데이타베이스에 초보라서 어떻게 넣어야 할지를 모르겠습니다.
> 결국 처음과 같은 질문이 되어 버렸군요.
파싱하여 처리를 했다면 DB 로 넣는 작업은 간단합니다.
Binary 를 저장하고자 하는 필드형을 적절한 BLOB 형으로 선언해 줍니다.
MySQL의 경우에는 tinyblob (크기:2^8), blob (크기:2^16), mediumblob (크기: 2^24), longblob (크기:2^32) 이렇게 4종류의 blob 형이 제공되고 있습니다. 이중 사정에 맞추어 적절한 blob 형으로 선언을 해 줍니다. 다음으로 이 blob 형으로 binary data 를 입력해 주면 됩니다.
입력방법은 LOAD_FILE(/path/to/local/file/that/uploaded) 이런 함수를 이용하면 될 것 같습니다. 그러면 현재 local 에 업로드 받은 파일을 BLOB 자료형으로 입력할 수 있을 것입니다.
업데잇도 마찬가지 방식으로 해 주면 됩니다. 예를 들면
update table_name set blob_attr = LOAD_FILE('/tmp/pict.gif') where id=0;
이런식의 구문이 되겠지요.
> 그리고 이번주 일요일에 모임이 있다고 들었는데
> 가보고는 싶지만 지방에 내려가야 할 일이 있어서
> 안타깝게 참석 못하게 될것 같네요.
>
> 답변을 잘해주셔서 개인적으로 재익님을 한번 만나보고 싶지만
> 다음 기회로 미뤄야 할것 같습니다.
> 죄송합니다.
다음에 기회가 되면 한번 만나서 얼굴을 보도록 하지요. 지방 잘 다녀 오시기 바랍니다. 저는 지방에만 살아봐서 별로 지방 가는 걸 안좋아 합니다. :-)
|