FE/Javascript

[Javascript] 다중 파일 다운로드 구현

좐쓰 2023. 2. 14. 10:19
반응형

프로젝트를 진행하다가 보면 '전체 파일 다운로드' 버튼을 클릭해 여러 개의 파일을 한 번에 다운로드해야하는 경우가 발생했다.

단순하게 개별 파일 다운로드를 반복문으로 처리하면 될 것 같다는 생각이 들었지만, HTTP 는 한개의 파일만 전송이 가능해서 처리중에 다른 요청이 들어가면 중단되고 만다.

 

따라서 파일 다운로드 요청간에 시간을 지연시켜서 해결을 하였다.

// 다운로드 할 파일 경로 가져오기
$.downloadSelectFile = () => {
		let tr = $('.dx-row.dx-data-row.dx-column-lines');
		let fl = "";
		//console.log(dataGrid.columns.data);
		for (data of tr) {
			if (data.ariaSelected == 'true') {
				fl = $(data).children().children(3).text();
				for (list of dtaList) {
					if (list.fl.indexOf(fl) > -1) {
						$.goAttachments('-', list.fl, 'dta');
						$.fnSleep(100);
					}
				}
			}
		}
	}
	//파일 다운로드 간 시간 지연
$.fnSleep = (dTime) => {
		const start = new Date().getTime();
		while(start + dTime > new Date().getTime());
	};
    
    //파일 다운로드 
$.goAttachments = function(caseNum, fl, type){
		let flPath = ""
		if (type != undefined) {
			flPath = fl;
		} else {
			flPath = "/yproject/cas/" + caseNum + "/" + fl;
		}
		location.href = "../smb/smbFileDownload.wips?fileName=" + flPath;
	};

 

정석적인 방법은 아닌거 같은데 파일 전체 다운로드의 한계치가 10개로 제한되어 있어서 해결 가능했었던거 같다.

 

반응형