org.apache.tomcat.util.http.fileupload.FileItem 인터페이스
FileItem 인터페이스는 multipart/form-data 형식으로 전송된 폼 데이터를 파일 또는 폼 아이템으로 표현하는 객체입니다.
FileItem 인터페이스 메소드
void delete() : 임시 디렉토리에 있는 임시 파일을 삭제합니다.
byte[] get() : 파일 아이템을 byte 배열로 반환합니다.
java.lang.String getContentType() : 콘텐츠 타입을 반환합니다.
java.lang.String getFiledName() : 필드 이름을 반환합니다. input 태그의 name 속성의 값을 반환합니다.
java.lang.String getName()
클라이언트에 저장되어 있던 파일의 이름을 반환합니다. 반환된 이름은 경로와 파일명이 모두 있는 파일명입니다.
long getSize() : 파일의 사이즈를 반환합니다.
java.lang.String getString() : 기본 문자셋으로 파일 아이템 내용을 반환합니다.
java.lang.String getString(java.lang.String encoding)
지정한 인코딩으로 파일 아이템 내용을 반환합니다. 이 경우는 파일의 내용이기 때문에 텍스트 파일이 한글로 작성된 경우에나 사용합니다.
boolean isFormField() : 일반 파라미터인지 여부를 반환합니다. 일반 파라미터일 경우 true를 반환합니다.
boolean isInMemoey() : 메모리에만 있는지 여부를 반환합니다.
void wirte(java.io.File file) : 업로드 된 파일을 디스크에 저장합니다.
예 제
FileItem item = (FileItem)itemCollection.next();
fileName = item.getName();
// 이때 파일 이름은 경로를 포함한 전체 파일명입니다. 따라서 경로를 제거해 주어야 합니다.
fileStream = item.getInputStream();
//**********************************************************
System.out.println("콘텐츠 타입 : " + item.getContentType() );
System.out.println("업로드 파일 이름 : " + item.getName() );
System.out.println("필드 이름 : " + item.getFieldName() );
System.out.println("파일 사이즈 : " + item.getSize() );
System.out.println("메모리 여부 : " + item.isInMemory());
//**********************************************************
[ 결 과 ]
콘텐츠 타입 : image/gif
업로드 파일 이름 : D:\temp\photo2.gif
필드 이름 : person
파일 사이즈 : 9732
메모리 여부 : true
파일 저장하기
File uploadFile = new File();
item.write( uploadFile );
파일 읽기
InputStream uploadStream = item.getInputStream();
...
uploadStream.close();
임시로 저장한 파일 자동으로 지우기
파일을 처리하기 전에 임시로 저장하고 임시로 저장한 파일을 지우기 위한 방법입니다. (org.apache.commons.io.FileCleaner Class) 하지만 이런 처리를 하지 않아도 파일을 사용하지 않으면 자동으로 임시 폴더의 파일을 지워버립니다.
web.xml 수정
<listener>
<listener-class>
org.apache.commons.fileupload.servlet.FileCleanerCleanup
</listener-class>
</listener>
DiskFileItemFactory 생성
public static DiskFileItemFactory newDiskFileItemFactory(ServletContext context, File repository) {
FileCleaningTracker fileCleaningTracker = FileCleanerCleanup.getFileCleaningTracker(context);
return new DiskFileItemFactory(fileCleaningTracker, DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, repository);
}
'자바(Java) > JAVA 2EE' 카테고리의 다른 글
포맷(fmt) 태그 - 날짜 포맷 처리 (0) | 2010.01.23 |
---|---|
포맷(fmt) 태그 - 숫자 포맷 처리 (0) | 2010.01.23 |
commons-fileupload 패키지를 사용한 파일 업로드 처리 방법 (0) | 2010.01.16 |
MultipartRequest 클래스를 사용한 파일 업로드 (0) | 2010.01.16 |
클라이언트가 파일을 다운로드 받을 수 있게 처리하는 방법 (0) | 2010.01.16 |