Home > 멀티 버전 > 다운로드
파일 다운로드 예제입니다.
설명

DEXTUploadX5 멀티 버전은 멀티 다운로드 기능을 제공하지 않습니다.

멀티 다운로드를 하려면 특정 위치에 여러 파일을 동시(순차적으로)에 기록해야 하지만, HTML5 기술로는 구현이 쉽지 않습니다.

간혹, 스크립트로 다운로드 요청을 여러 번 하거나, 서버 측에서 zip 파일로 압축하여 다운로드를 하는 방법이 있지만, 일종의 편법으로써 브라우저 별 일관성이 떨어지거나, UX가 매우 불편하거나, 과도한 서버 리소스 소비로 인해 많은 문제점이 발생할 수 있습니다.

그런 이유로 인해 DEXTUploadX5 멀티 버전은 멀티 다운로드 기능을 제거했으며, 대신 IE 버전을 사용하면 멀티 다운로드 기능을 제공받을 수 있습니다.

 

스크립트에서 파일을 다운로드하려면 download 함수를 사용합니다.

다운로드 가능한 대상은 반드시 downUrl 속성 값을 가지고 있는 가상 파일이어야 합니다.

var dx = dx5.get("컴포넌트 아이디");

// downUrl 속성에 다운로드 웹 경로가 존재해야 합니다.
dx.addVirtualFile({ ... name: "서강대교_509147.jpg", downUrl: "http://.../service/common-download.do?key=FID0001" });

// 가상 파일의 고유 아이디를 사용하여 다운로드를 수행합니다.
dx.downloadById("다운로드할 가상 파일의 고유 아이디");

// 플래그 값에 따라 다운로드를 수행합니다.
// AUTO: 첫 번째 가상 파일을 다운로드합니다.
// SELECTED: 선택된 대상 중에 첫 번째 가상 파일을 다운로드합니다.
// CHECKED: 체크된 대상 중에 첫 번째 가상 파일을 다운로드합니다.
dx.download("SELECTED");

IE, Edge, Safari 같은 브라우저는 HTML5 요소인 download 속성을 지원하지 않습니다.

이 속성이 없다면, 파일을 다운로드가 되지 않고 새 창으로 열리는 문제가 있으며, XHR2를 사용하여 다운로드하는 경우에는, (작은 파일이 아닌 용량이 큰 파일의 경우) 메모리에 문제가 발생할 수 있습니다.

그러므로 일관성이 있는 파일 다운로드를 수행하기 위해서는 서버 측에서 DEXTUploadNJ를 사용하여 attachment 형식으로 파일을 전송토록 작성해야 합니다.

 

이 샘플은 파일 다운로드 처리를 서블릿(CommonFileDownload 클래스)이 담당하며 web.xml에 common-download.do로 매핑되어 있습니다.

# 서버 측 설정입니다.						
File target = null;
		
String key = request.getParameter("key");

if (key.equals("FID0001")) target = new File(fileRoot, "서강대교_509147.jpg");
else if (key.equals("FID0002")) target = new File(fileRoot, "우도해변_239826.jpg");
else if (key.equals("FID0003")) target = new File(fileRoot, "코스모스 (빈공간) 195779.jpg");

if (target == null  || target.exists() == false || target.isFile() == false) {
  response.sendError(HttpServletResponse.SC_NOT_FOUND, "주어진 키에 해당하는 파일 정보가 없습니다.");
  return;
}

try {
  // FileDownload 객체를 생성합니다.
  FileDownload dextnj = new FileDownload();
  // 인코딩을 UTF-8로 설정합니다.
  response.setCharacterEncoding("UTF-8");
  // 파일을 첨부 파일 형식으로 다운로드합니다.
  dextnj.download(request, response, target);	
} catch (Exception e) {
  throw new ServletException(e);
}
예제

 

 

멀티 버전은 동시에 여러 파일을 다운로드할 수 없으며, 한 번에 하나의 파일만 다운로드 가능합니다.