우당탕탕 개발일지

68일차_Spring Project(4) File Upload: Back 본문

비트캠프/이론 및 정리

68일차_Spring Project(4) File Upload: Back

ujin302 2024. 10. 14. 11:38
반응형

1. Controller.java

// 3. 다중 파일 처리: List
	@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = "text/html; charset=UTF-8")
	@ResponseBody
	public String upload(@ModelAttribute UserFileUploadDTO userFileUploadDTO, // 파일 정보 
						 @RequestParam("img[]") List<MultipartFile> imgList, // 업로드 파일 정보 
						 HttpSession session) { // 
		// [ 파일 객체 설정 ]
		// 실제 폴더 
		String filePath = session.getServletContext().getRealPath("resources/storage");
		// D:\Spring\workspace\stsWorkspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\SpringProject\resources\storage

		String imgOriginalFileName = null;
		File file = null;
		String result = "";
		List<UserFileUploadDTO> dtoList = new ArrayList<UserFileUploadDTO>();
		
		for (MultipartFile fileImg : imgList) {
			System.out.println("userDTO : " + userFileUploadDTO.toString());
			// 변수 설정
			String imageFileName = UUID.randomUUID().toString();
			UserFileUploadDTO dto = new UserFileUploadDTO();
			imgOriginalFileName = fileImg.getOriginalFilename();
			file = new File(filePath, imgOriginalFileName);
			
			System.out.println("실제 폴더: " + filePath + "/" + imgOriginalFileName);
			
			// file 객체로 형변환
			try {
				fileImg.transferTo(file);
			} catch (IllegalStateException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			// 화면에 뿌릴 HTML 태그
			result += "<span>"
				+ "<img src='/Spring/resources/storage/" + imgOriginalFileName + "' width='300' height='300'"
				+ "<span/><br>";
			
			// dto 설정 후, dtoList에 저장
			dto.setImageName(userFileUploadDTO.getImageName());
			dto.setImageContent(userFileUploadDTO.getImageContent());
			dto.setImageFileName(imageFileName);
			dto.setImageOriginalName(imgOriginalFileName);
			
			System.out.println("controller: " + dto.toString());
			dtoList.add(dto);
		}
		
		// [ DB 저장 ]
		fileUploadService.fileUpload(dtoList);
		
		return result;
	}

 

 

 

 

2. Mapper 두개 이상 등록

 

옆의 사진 처럼 등록해야하는 Mapper.xml이 2개 있다. 

 

 

 

Mapper 파일 1개 

 

Mapper 파일 2개

방법1. 배열 사용

Mapper.xml 파일 개수만큼 추가

 

 

방법2. 패턴 사용

와일드카드( * )를 사용하여 Mapper.xml 파일 등록

mapper 파일 아래, Mapper.xml로 끝나는 모든 파일을 Mapper로 등록

 

 

3. Bean 별명 짓기

mybatis-config.xml (기존 방식)

typeAliases 태그 사용하여 자주 사용하는 객체를 개발자가 원하는 이름으로 지정함

 

configuration.java

setTypeAliasesPackage() 함수를 사용하여 해당 경로에 있는 객체을 등록

해당 객체의 이름은 Mapper.xml 파일에서 사용할 때, Class 이름으로 사용한다. 

 

Mapper.xml

 

UserFileUploadDTO.java

 

 

 

 

 

 

 

 

반응형