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개로 제한되어 있어서 해결 가능했었던거 같다.
반응형