Spring REST _ 비동기 파일 업로드(ajax) - 경로를 따라 파일 저장까지

dwanGim·2022년 7월 11일
0

spring_basic

목록 보기
36/41

ajax 파일 업로드

	@GetMapping("/uploadAjax")
	public void uploadAjax() {
		
		log.info("upload ajax");
		
	} // uploadAjax END

ajax를 통해 upload를 해보아야 할 때

위와 같이 작성해서 간단히 테스트를 먼저 해보겠습니다.

uploadAjax.jsp의 내부를 위와 같이 간단하게 작성해서 확인하고

ajax 를 쓰기 위해 jquery 스크립트를 위와 같이 작성해줍니다.

console을 찍어가면서 data들을 확인하고

위와 같이 formData를 보낼 수 있게 ajax를 짜줍니다.

processData, contentType은 모두 false로 반드시 입력해야 합니다.

컨트롤러에 위와 같이 메서드를 작성해야 합니다.

multipartFile 을 transferTo()하기 위해서

업로드할 폴더의 경로를 만들고

multipartFile 리스트의 향상된 for문에 ajax로

받아온 파일을 걸어서 저장해줍니다.

이후에 파일명을 subString과 lastIndexOf를 이용해서

저장될 파일명(uploadFileName)을 찾아줍니다.

upload할 폴더와 upload할 파일명이 모두 명명되었으면

File 자료형에 담아서

그 뒤 multipartFile에 transferTo 해주면 끝입니다.

위와 같이 파일들이 비동기 연결을 통해

form 태그를 거치지 않고 적재가 되면 일단은 기반이 건설된 것 입니다.

// UploadController
	
	@PostMapping("/uploadAjaxAction")
	public void uploadAjaxPost(MultipartFile[] uploadFile) {
		
		log.info("ajax post update!");
		
		String uploadFolder = "C:\\upload_data\\temp";
		
		for(MultipartFile multipartFile : uploadFile) {
			
			log.info("------------------------");
			log.info("Upload file name : " + multipartFile.getOriginalFilename());
			log.info("Upload file size : " + multipartFile.getSize());
			
			String uploadFileName = multipartFile.getOriginalFilename();
			
			uploadFileName = uploadFileName.substring(uploadFileName.lastIndexOf("\\") + 1);
			
			log.info("last file name : " + uploadFileName);
			
			File saveFile = new File(uploadFolder, uploadFileName);
			
			try {
				
				multipartFile.transferTo(saveFile);
				
			} catch(Exception e) {
				log.error(e.getMessage());
			}
		}
		
		
	} // uploadAjaxPost END
profile
배울 게 참 많네요.

0개의 댓글