본문 바로가기
Spring/Spring 기초

e7e샘의 파일 업로드 및 다운로드!!(유용)

by 미눅스[멘토] 2023. 8. 28.
728x90
 //파일 다운로드!!
 //요 테크닉 잘 저장해주었다가 활용!, 요 방법이 젤 쉽고, 명확!
 function fDownload(urlPath) {
    let startIndex = urlPath.lastIndexOf("/")+1;
    let oFileName = urlPath.substring(startIndex);

    let aTag = document.createElement("a"); //a 태그 생성
    aTag.href = urlPath;
    aTag.download = oFileName; //클릭시 다운로드가 되도록 downlad속성 추가

    aTag.click(); //강제 클릭 발생
 }

 //페이지 시작하자마자 리스트 뿌리깅
 function getList(){
    $.ajax({
        type:"get",
        url:"/rest/suji",
        //data:"", //보낼 데이터가 없어서 생략
        dataType:"text",// 요걸 알아서 해줌 JSON.parse(xhr.responseText),클라이언트에서 해줌
        //contentType:"application/json; charset=utf-8", //보낼데이터가 없어서 생략
        //async:"true", //디폴트가 true라서 안써도됨 생략
        success:function(rslt){
            console.log("체킁 : ",JSON.parse(rslt));
            rslt = JSON.parse(rslt);
            //정렬도 클라이언트 사이드에서 하면 성능이나 , 서버부하
            //줄이는 측면에서 유리함
            rslt.sort((a,b)=>{
                return b.sujiNum-a.sujiNum;
            })

            //빨랑 테이블로 출력해보삼
            let tblStr = "<table border=1>"
            tblStr += "<tr><td>넘버</td><td>이름</td><td>내용</td><td>파일</td><td>다운로드</td></tr>"
            for(let i=0; i<rslt.length; i++){

                tblStr +=  `<tr><td>${rslt[i].sujiNum}</td>
                                <td>${rslt[i].sujiName}</td>
                                <td>${rslt[i].sujiContent}</td>
                                <td><a href='${rslt[i].sujiFile}' >보기</a></td>
                                <td><button onclick=fDownload('${rslt[i].sujiFile}') >다운로드</button></td></tr>
                                `
            }
            tblStr +="</table>"
            //disp에 뿌리기
            $list.html(tblStr)
        },
        error:function(xhr, status, error){
            console.log("code: " + xhr.status)
            console.log("message: " + xhr.responseText)
            console.log("error: " + error);
        }
    });
 }