자바(Java)/JAVA 2EE

fileupload패키지의 FileItem 클래스 정의

본클라쓰 2010. 1. 16. 11:40

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);

}