Class GlueMultipartRequest

java.lang.Object
com.poscoict.glueframework.web.control.GlueMultipartRequest

public class GlueMultipartRequest extends Object
GlueMultipartRequest는 form이 multipart/form-data 인경우 생성된다.
GlueMultipartRequest를 Default 생성자로 생성한다. 최대 Size는 100Mbyte이다.
 File Upload Size 변경 방법
 1: glue.properties에 다음과 같이 선언. 단, Integer.MAX_VALUE 가 상한값임.
        max.upload.file.size=1000000000
        이 size를 넘으면 connection error를 발생하게 된다.
 2: GlueAbstractAction, GlueAbstractController 을 상속받아서 구현
        reqeust.setAttribute(GlueWebConstants.MAXUPLOADSIZE,"1000000000");
        
        이 GlueMultipartRequest는 Glue F/W에서 생성 하여 주며 
        Web이 아닌 Non Web 프로그램에서는 사용할 수 없다. 
        사용 방법은 다음과 같다.
        GlueMultipartRequest mReq = ctx.getMultiPartRequest();
        if(mReq != null) { 
            File f = getFile("a.txt");
        }
 
 대용량 File Upload 적용 방법
 대용량 File의 경우 WAS의 Memory Size에 제약을 받는다. 
 예를 들어 WAS의 Memory를 100MB로 하였다고 한다면
 100MB 보다 큰 File은 Upload를 하지 못하게 된다.
 이런경우 대용량 File을 적용하여야 한다.
 
 대용량 File 적용 방법:
 - JAVA Option 설정 (필수) : "-Dfile.bigsize=true"
 - JAVA Option 설정 (선택) : "-Dtemp.bigfile.path=임시파일의 절대경로"
 대용량 File을 임시 파일로 먼저 저장하여 사용하게 된다.
 동일 파일명에 대해서 임시 파일은 overwrite 된다 (since ver.4.2.9)  
 
 제약 사항:
 - 기존 byte [] 형태로 File의 Contents를 받아 처리 하던 Logic은 더이상 사용 될 수 없다.
 - 해당 Method List :
 public byte[] getFileContent(String fileName)
 public byte[] getFileContentByInputName(String inputName)
 public byte[][] getMultiFilesContentByInputName(String inputName)
 public String toStringFileContent(String fileName)
 
  • Constructor Details

    • GlueMultipartRequest

      public GlueMultipartRequest(ServletRequest request) throws Exception
      생성자(constructor). Internal Use Only. GlueMultipartRequest를 Default 생성자로 생성한다. 최대 Size는 100Mbyte이다. 만일 이 이상의 File Size를 Upload 해야 한다면 GlueAbstractAction을 상속받아서 beforeExecute()에서 다음과 같이 구현 하여야 한다.(단위는 byte)
       방법 1: glue.properties에 다음과 같이 선언
              max.upload.file.size=1000000000
       방법 2: 다음과 같이 구현
              reqeust.setAttribute(GlueWebConstants.MAXUPLOADSIZE,"1000000000");
       
      Parameters:
      request - HTTP Request
      Throws:
      Exception - Request를 parsing 하는 도중 에러가 발생되면 throw 된다.
  • Method Details

    • setTargetDirectory

      public void setTargetDirectory(String path)
      Upload된 File들을 저장하길 원할때 사용한다.
      만일 File을 저장 할 것이라면 반드시 이 Method를 호출하여야 한다.
      사용 방법은 다음과 같다.
       기본적으로 Web 환경에서 다음 2개 Action Class가 사용된다면 setTargetDirectory()가 실행된다.
       mReq.setTargetDirectory("/upload/chain/");
       mReq.saveFile("a.txt"); 
      
       위 예에서 만일 mReq.setTargetDirectory()를 먼저 실행하지 않았다면 Error가 발생된다.
       
      Parameters:
      path - String File을 저장할 Directory 명
      Throws:
      IllegalArgumentException - Directory의 권한 및 잘못된 경로
    • getParameterMap

      public Map<String,String[]> getParameterMap()
    • getFileNames

      public Iterator<String> getFileNames()
      File 명을 탐색하기 위한 Iterator를 반납한다.
      Returns:
      Iterator
    • getInputStream

      public InputStream getInputStream(String fileName)
      메모리에 캐쉬하고 있는 파일의 내용을 InputStream형태로 반환한다.
      Parameters:
      fileName - 파일명
      Returns:
      파일 내용의 InputStream형 개체
    • getFileContentsForHuge

      public Object getFileContentsForHuge(String fileName)
      HTTP Request Stream에서 읽어 들인 파일의 컨텐츠를 Return 한다. File의 Contents는 대용량 File 옵션을 적용한 경우에는 File을 return하고 그렇지 않은 경우에는 byte []를 return 한다
      Parameters:
      fileName - 파일명
      Returns:
      file Contents
      Throws:
      Exception
    • copyFile

      public static void copyFile(File input, File output)
      File 을 Copy 한다.
      Parameters:
      input - file
      output - file
    • saveFile

      public File saveFile(String fileName)
      파일을 Server상의 지정된 업로드 디렉토리에 저장한다.
      Parameters:
      fileName - 저장하고자 하는 파일명
      Returns:
      저장된 파일의 java.io.File 객체
      Throws:
      Exception - FileNotFoundException 파라미터로 넘어온 파일명이 존재하지 않을때 발생된다. Exception 파일 저장중 오류가 났을때 발생된다.