설명
DEXTUploadX5는 파일 업로드는 동작 방식으로 네 가지 모드를 지원한다.
- ORAF(기본): 업로드할 파일 모두를 하나의 요청에 담아 전송한다. 업로드가 완료되면 응답 데이터는 1개가 된다.
- OROF: 업로드할 파일의 개수만큼 요청이 이루어집니다. 업로드가 완료되면 파일의 개수만큼 응답 데이터가 생성된다.
- EXTS: OROF와 동일하나, 대용량 업로드로써, 개별 혹은 전체 파일의 크기가 2GB를 넘는 경우에 사용된다. (대용량 파일 업로드 예제를 참고한다.)
- AWSS3: Amazon S3에 파일을 업로드할 때 사용된다. (Amazon S3 파일 업로드 예제를 참고한다.)
var dx = dx5.get("component-id");
// ORAF, OROF, EXTS, AWSS3로 업로드 모드를 설정한다.
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 데이터와 가상 파일 정보(삭제)를 서버로 전송하지 않으며,
|