ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ajax 파일 전송
    Web (Spring ) 2016. 11. 17. 16:05

    개요


    Ajax 파일 업로드



    1
    <script type="text/javascript" src="/js/jquery.form.js"></script>
    cs

    form data 전송 시 스크립트 선언


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    /**
     * 직인파일
     *
     */
     
    public class JiginAdminFileVo {
        
        private int jiginno; //직인파일 번호
        private String savefilename; // 저장파일
        private String orgfilename; //원본
        private String filetype; //파일 type
        private String filesize; //파일 size
        private String datereg; //파일 등록일
        private String fileyn; //파일 삭제여부
        
        public int getJiginno() {
            return jiginno;
        }
        public void setJiginno(int jiginno) {
            this.jiginno = jiginno;
        }
        public String getSavefilename() {
            return savefilename;
        }
        public void setSavefilename(String savefilename) {
            this.savefilename = savefilename;
        }
        public String getOrgfilename() {
            return orgfilename;
        }
        public void setOrgfilename(String orgfilename) {
            this.orgfilename = orgfilename;
        }
        public String getFiletype() {
            return filetype;
        }
        public void setFiletype(String filetype) {
            this.filetype = filetype;
        }
        public String getFilesize() {
            return filesize;
        }
        public void setFilesize(String filesize) {
            this.filesize = filesize;
        }
        public String getDatereg() {
            return datereg;
        }
        public void setDatereg(String datereg) {
            this.datereg = datereg;
        }
        public String getFileyn() {
            return fileyn;
        }
        public void setFileyn(String fileyn) {
            this.fileyn = fileyn;
        }
        
        @Override
        public String toString() {
            return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
        }
     
    }
    cs

    bean 객체 생성


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        @RequestMapping(value="/authenticate/jigin/insertJiginFile.do", method=RequestMethod.POST)
        @ResponseBody
        public String jiginInsert(HttpServletRequest request){
            String flag = "n";
            try{
                jiginService.insertJiginFile(request);
                flag = "y";
            }catch(Exception e){
                System.err.println(e.toString());
            }
            return flag;
        }
    cs

    controller

    @parameter HttpServletRequest

    @return String flag


    1
    void insertJiginFile(HttpServletRequest request);
    cs

    service


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    @Override
        public void insertJiginFile(HttpServletRequest request) {
            
            jiginDAO.deleteJiginFile(); //insert할때 마다 기존파일 삭제
            
            String uploadext = "png";
            String type = "";
            boolean typeFlag = false;
     
            if (uploadext == null) {
                uploadext = "";
                typeFlag = true;
            }
            uploadext = uploadext.toLowerCase();
            List<String> fileType = new ArrayList<String>();
            if (null != uploadext) {
                fileType = Arrays.asList(uploadext.split(","));
            }
     
            MultipartHttpServletRequest multi = (MultipartHttpServletRequest) request;
            Iterator<String> fileIterChk = multi.getFileNames();
            while (fileIterChk.hasNext()) {
                MultipartFile mFile = multi.getFile((String) fileIterChk.next());
                if (mFile.getSize() > 0) {
                    String org = mFile.getOriginalFilename();
                    //
                    type = org.lastIndexOf(".">= 0 ? org.substring(org
                            .lastIndexOf("."+ 1) : "";
                    type = type.toLowerCase();
     
                    for (int a = 0; a < fileType.size(); a++) {
                        if (fileType.get(a).equals(type)) {
                            typeFlag = true;
                        }
                    }
     
                    if (!typeFlag)
                        return;
     
                    // if (mFile.getSize()>uploadbytes*1024*1024) return
                    // "첨부파일이 개별업로드용량 제한을 초과하였습니다.";
                    else {
     
                        Calendar c = Calendar.getInstance();
                        int year = c.get(Calendar.YEAR);
                        int month = c.get(Calendar.MONTH) + 1;// 월값, +1하는 이유는 1월이 0으로 반환되기 때문
     
                        String sPathChar = java.io.File.separator;
                    
                        String filePath = "/file" + "/" + year + "/" + month + "/"//폴더생성 + 연도 + 월
     
                        type = org.substring(org.lastIndexOf("."));
                        type = type.toLowerCase();
     
                        String storedFileName = filePath + "-" + CommonUtils.getRandomString() + type; //저장파일이름은 randomstring으로 변환
     
                        // File file = new
                        // File("D:/eGovFrameDev-3.5.1-32bit/workspace/greencity/src/main/webapp");
                        File file = new File("E:/dev/eGovFrameDev-3.5.1-64bit/workspace/project/src/main/webapp"+filePath);
                        if (file.exists() == false) {
                            file.mkdirs();
                        }
     
                        try{
                            file = new File("E:/dev/eGovFrameDev-3.5.1-64bit/workspace/project/src/main/webapp" + storedFileName);
                            mFile.transferTo(file);
     
                            JiginAdminFileVo jiginAdminFileVo = new JiginAdminFileVo();
                            jiginAdminFileVo.setFiletype(type);
                            jiginAdminFileVo.setOrgfilename(org);
                            jiginAdminFileVo.setSavefilename(storedFileName);
                            jiginAdminFileVo.setFilesize(Integer.toString((int) mFile.getSize()));
                            jiginDAO.insertJiginFile(jiginAdminFileVo);
     
                        }catch(Exception e){
                            System.err.println(e.toString());
                        }
                    }
                }
            }
    cs

    service business logic


    1
    2
    3
    public void insertJiginFile(JiginAdminFileVo jiginAdminFileVo) {
            insert("jiginDAO.insertJiginFile",jiginAdminFileVo);
        }
    cs

    dao mapper 연결


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
        <update id="jiginDAO.deleteJiginFile">
            update gn_jigin set fileyn = 'n'
        </update>
        
        
        <insert id="jiginDAO.insertJiginFile" parameterClass="jiginAdminFileVo">
        
            insert into gn_jigin
            (
                    savefilename
                ,    orgfilename
                ,    filetype
                ,    filesize
            )
            values
            (
                    #savefilename#
                ,    #orgfilename#
                ,    #filetype#
                ,    #filesize#
            )
        
        </insert>
    cs

    query 작성


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function insertFile(){
        var form = $('form')[0];
        var formData = new FormData(form);
     
            $.ajax({
                type: "POST",
                data: formData,
                processData: false,
                contentType: false,
                dataType: "text",
                url: "/authenticate/jigin/insertJiginFile.do",
                success: function(data) {    
                    if(data == 'y'){                        
                        alert("저장되었습니다");
                        self.close();
                    }else{
                        alert("다시시도");
                    }
                }
                , error: function(data, status, err) { 
                    alert('서버와의 통신이 실패했습니다.'); 
                    return false;
                }
            });
    }
    cs
    a

    ajax

Designed by Tistory.