java

파일 업로드와 MultipartRequest

알 수 없는 사용자 2005. 11. 28. 12:32
1. 대용량 파일 업로드
대용량 파일 업로드 시. 소켓을 직접 구현하여 파일을 읽어 업로드 하다가 일정 시간이 지나면 - 점유율을 낮추기 위해 - IO를 끊는다. 잠시 텀을 가지고 다시 IO를 연결하여 파일을 분할하여 write 하는 경우도 있다.

2. 파일 업로드 관련 프로젝트
- MultipartRequest - 클래스를 생성하는 순간 파일사이즈와 관계없이 모두 읽어 wrtie한다. 업로드 되는 파일명을 지정할 수도 없고. 해당 파일명이 중복되면 옵션에 따라 파일명 뒤에 숫자가 붙는다. 한글파일이 깨지지 않도록 인코딩 방법을 지정해 줄 수 있다.
만약 form의 내용이 비어있는 경우에는 null 값으로 들어간다.

- Commons

3. MultipartRequest 의 문제점 발생
- submit 되는 file 폼은 같은 이름의 폼 객체를 사용한다.  
- 업로드 시 파일 명을 자동으로 중복체크하여 파일명을 변경하여 업로드 되는 경우.
- MultipartRequest 의 getFile(name) 을 사용하는 경우.
- form 객체의 가장 마지막 파일만 리턴된다.
- MutipartRequest 수정
- 생성자에서 file 을 hashtable 에 넣어 사용하는데. 그때 중복되는 key가 있으면 덮어서 넣음.

* 수정사항 - K사 프로젝트
- 메소드 추가. getFiles(name) 를 하면 file[] 배열이 리턴된다.
- 메소드 추가. UploadFile[]을 직접 리턴받을 수 있다. UploadFile 클래스는 MultipartRequest 내부에서 사용하는 파일정보를 가진 클래스이다. 디렉토리 정보, 파일명 정보 등이 들어있다.
해당 클래스에서 직접 UploadFile 클래스를 리턴받아 해당 데이터를 직접 가져온다.