상세 컨텐츠

본문 제목

Spring 파일 업로드 저장

Spring

by husks 2016. 9. 20. 16:51

본문

반응형


웹에서 파일 업로드 하여 디렉토리에 저장하는 소스 입니다.


스프링으로 개발이 되었습니다.


저장하는 소스를 controller 에서 개발하였는데 service에서 처리하는 것을 추천드립니다.


자세한 사항은 주석으로 설명하였고 추가 문의 사항이 있으시면 댓글 또는 메일로 보내주세요. ^^


[jsp]

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
<!doctype html>
<html lang="kr">
<head>
  <meta charset="utf-8">
  <title>demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
  <script>
    $(document).ready( function() {
        
        $("input[type=file]").change(function () {
            
            var fileListView = "";
            
            var formData = new FormData(); //ajax로 넘길 data
            
            var fileInput = document.getElementById("test_file"); //id로 파일 태그를 호출
            
            var files = fileInput.files; //업로드한 파일들의 정보를 넣는다.
            
            for (var i = 0; i < files.length; i++) {
                formData.append('file-'+i, files[i]); //업로드한 파일을 하나하나 읽어서 FormData 안에 넣는다.
            }
            
            $.ajax({
                url: "/test/fileSave",
                data: formData,
                  processData: false,
                  contentType: false,
                  type: 'POST',
                  success: function(data){
                      
                      if(data.code == "OK"){ //응답결과
                          
                          fileInfoList = data.fileInfoList; //응답 결과 데이터 fileInfoList
                        $.each(fileInfoList, function( index, fileInfo ) {
                            
                            console.log("Path: "+fileInfo.fileFullPath); //전체경로
                            console.log("FileName: "+fileInfo.originalFilename); //파일명
                                                    
                            fileListView += "<p>"+fileInfo.originalFilename+"</p>"//루프를 돌려서 화면에 보여줄 리스트 작성
                            
                        });
                        
                        $("#file_view_list").html(fileListView); //리스트를 화면에 보여줌
                        
                    }else{
                        alert("파일 등록에 실패하였습니다.");
                    }
                    
                },
                error: function(xhr,textStatus,error){
                                        
                    console.log("textStatus: "+xhr.status+", error: "+error);
                    alert("예상치 못한 오류가 발생했습니다.");
                    
                }
            });
 
            
        });
        
    });
  </script>
</head>
<body>
    <br>
    <br>
    <input type="file" id="test_file" multiple><!-- 복수개의 파일을 선택 -->
    <br>
    <h3>파일 리스트</h3>
    <br>
    <div id="file_view_list"></div><!-- 파일 리스트를 보여줄 div -->
</body>
</html>



[controller]

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
@ResponseBody
@RequestMapping(value = "/test/fileSave"
public Object fileSave(MultipartHttpServletRequest multipartRequest) {
 
    List<HashMap> fileArrayList = new ArrayList<HashMap>();
    HashMap fileHashMap;
 
    String filePath = "C:/test"//파일 저장 경로, 설정파일로 따로 관리한다.
 
    File dir = new File(filePath); //파일 저장 경로 확인, 없으면 만든다.
    if (!dir.exists()) {
        dir.mkdirs();
    }
 
    Iterator<String> itr =  multipartRequest.getFileNames(); //파일들을 Iterator 에 넣는다.
 
    while (itr.hasNext()) { //파일을 하나씩 불러온다.
 
        MultipartFile mpf = multipartRequest.getFile(itr.next());
 
        fileHashMap = new HashMap();
 
        String originalFilename = mpf.getOriginalFilename(); //파일명
 
        String fileFullPath = filePath+"/"+originalFilename; //파일 전체 경로
 
        try {
            //파일 저장
            mpf.transferTo(new File(fileFullPath)); //파일저장
 
            fileHashMap.put("originalFilename", originalFilename);
            fileHashMap.put("fileFullPath", fileFullPath);
 
            fileArrayList.add(fileHashMap);
 
        } catch (Exception e) {
            System.out.println("postTempFile_ERROR======>"+fileFullPath);
            e.printStackTrace();
        }
 
    }
 
    Map<String, Object> retVal = new HashMap<String, Object>(); //응답값 셋팅
 
    try{
        retVal.put("fileInfoList", fileArrayList);    
        retVal.put("code""OK");
    }catch(Exception e){
        retVal.put("code""FAIL");
    }
 
    return retVal;
 
}



결과화면


반응형

관련글 더보기

댓글 영역