웹에서 파일 업로드 하여 디렉토리에 저장하는 소스 입니다.
스프링으로 개발이 되었습니다.
저장하는 소스를 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; } |
결과화면
Spring excel download xlsx (엑셀 2007 이후버전) (15) | 2017.01.19 |
---|---|
Maven Build java.lang.NoClassDefFoundError 처리 (2) | 2016.11.22 |
Spring 파일 디렉토리 경로 다운로드 (9) | 2016.09.20 |
[mybatis] foreach를 이용한 다중 insert (0) | 2016.08.31 |
Mybatis, mysql 반복 쿼리 실행 (insert), foreach (0) | 2016.08.18 |
댓글 영역