Home > IE 버전 > 업로드 모드
ORAF/OROF 파일 업로드 예제입니다.
설명

DEXTUploadX5는 파일 업로드는 동작 방식으로 세 가지 모드를 지원합니다.

  • ORAF(기본): 업로드할 파일 모두를 하나의 요청에 담아 전송합니다. 업로드가 완료되면 응답 데이터는 1개가 됩니다.
  • OROF: 업로드할 파일의 개수만큼 요청이 이루어집니다. 업로드가 완료되면 파일의 개수만큼 응답 데이터가 생성됩니다.
  • EXNJ: OROF와 동일하나, 대용량 업로드로써, 개별 혹은 전체 파일의 크기가 2GB를 넘는 경우에 사용됩니다. (대용량 파일 업로드 샘플을 참고하세요.)
var dx = dx5.get("컴포넌트 아이디");

// ORAF, OROF, EXNJ로 업로드 모드를 설정합니다.
dx.setUploadMode("ORAF");

// 파일 업로드는 자동 바인딩 기능을 사용하지 않고 upload 함수를 사용하여 시작할 수 있습니다.

// 로컬 파일 모두 업로드합니다.
dx.upload("AUTO");
// 선택된 로컬 파일을 모두 업로드합니다.
dx.upload("SELECTED");
// 체크된 로컬 파일을 모두 업로드합니다.
dx.upload("CHECKED");

ORAF로 파일 업로드를 하는 경우, 서버 측에서는 업로드한 파일을 한 번에 얻을 수 있습니다.

# 서버 측 설정입니다.						
...
dextnj = new FileUpload(request, env);  
// 클라이언트로부터 전송된 데이터로부터 파일 데이터 부분을 모두 임시 파일로 저장합니다.
// 임시 저장 위치는 Environment#setTempRepository 메소드로 설정됩니다.
dextnj.prepare();  
// FileUpload#getFileItem 메소드를 사용하여 폼 이름으로 하나씩 호출할 수 있지만,
// getFileItems 메소드를 사용하면 콜렉션 객체를 얻을 수 있습니다.
List<FileItem> items = dextnj.getFileItems();
// for 같은 루프문을 사용하여 업로드된 모드 파일을 한 번에 얻습니다.
FileItem file = null;
for (int i = 0; i < items.size(); i++) {
  file = items.get(i);
  if (file.isEmpty() == false) {
    file.save();
    ...
  }
}
...

OROF로 파일 업로드를 하는 경우, 서버 측에서는 파일 1개당 한 번의 요청(request)가 발생합니다.

# 서버 측 설정입니다.						
...
dextnj = new FileUpload(request, env);			
dextnj.prepare();
// OROF이므로 서버로 전달되는 파일 폼 요소는 오직 1개입니다.
FileItem file = dextnj.getFileItem(0);
if (file.isEmpty() == false) {
  file.save();
...
}
...

클라이언트는 몇 가지 설정만으로 업로드 방식을 변경할 수 있지만, 서버 측 코드는 업로드 방식에 따라 구성이 완전히 달라질 수 있습니다.

업로드 방식은 서버 측에서 런타임에 쉽게 바꿀 수 있는 부분이 아니므로, 업로드 모드는 구현하고자 하는 서비스에 맞는 방식을 신중히 고민하시고 선택하시길 바랍니다.

예제

 

 

DEXTUploadX5는 자사의 기존 클라이언트 제품과 달리 Form 데이터와 가상 파일 정보(삭제)를 서버로 전송하지 않으며,
순수하게 로컬 자원만 업로드 대상이 됩니다.
그러므로 파일 삭제 작업처럼, 서버로 액션을 전달하려는 경우에는 업로드에서 처리하지 않고, 따로 Ajax나 Form submit을 사용하여 처리하셔야 합니다.