[Spring] 사진 다운로드

JSP

1. 화면에서 다운로드 허용할 이미지에 iframe 속성을 추가한다. (display:none; 으로 보이지 않게)

<!-- 회원 증명사진 이미지 시작 -->
<div class="col-lg-5 d-none d-lg-block bg-register-image"
	style="background-image:url('/resources${memberVO.memberCertPic}');background-repeat:no-repeat;cursor:pointer" 
	alt="클릭하면 다운" title="클릭하면 다운"></div>
<iframe id="ifrm" name="ifrm" style="display:none;"></iframe>

<!-- 회원 증명사진 이미지 끝 -->

style - cursor도 적용해서 마우스를 올려놓으면 선택 가능하게 했다.

화면 :

2. 해당 iframe에 자바스크립트 추가

<script type="text/javascript">
$(function(){
	$(".bg-register-image").on("click", function(){
// 		alert("${memberVO.memberCertPic}");
		
		$("#ifrm").prop("src","/download?fileName=${memberVO.memberCertPic}");
	});
});
</script>
  • 해당 iframe을 클릭했을 때 =>
    /download?fileName=해당 member의 사진경로가 Controller로 넘어간다.

Controller

  • JSP에서 받은 요청 /download에 parameter fileName을 받아서 진행된다.

ResponseEntity<Resource> - Resource는 org.springframework.core.io.Resource의 Resource이다.

	@ResponseBody
	@RequestMapping(value="/download", 
			produces=MediaType.APPLICATION_OCTET_STREAM_VALUE)
	public ResponseEntity<Resource> downloadFile(@RequestParam String fileName){
		///resources/upload/ksh.jpg
		//Java의 정규표현식에서 \와 $ 사용할 때, 오류 발생
		logger.info("download file : " + fileName);
		String downloadPath = "D:\\A_TeachingMaterial\\6.JspSpring\\workspace\\springProj\\src\\main\\webapp\\resources" + 
				fileName.replaceAll("/", Matcher.quoteReplacement("\\"));
		
		logger.info("downloadPath : " + downloadPath);
		
		Resource resource = new FileSystemResource(downloadPath);
		
		logger.info("resource : " + resource);
		
		String resourceName = resource.getFilename();
		
		HttpHeaders headers = new HttpHeaders();
		
		try {
			//Content-Disposition : 파일 이름에 한글인 경우 저장 시 깨지는 문제를 막기 위함
			headers.add("Content-Disposition", "attachment;filename=" + new String
					(resourceName.getBytes("UTF-8"), "ISO-8859-1"));
		}catch(UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		return new ResponseEntity<Resource>(resource, headers, HttpStatus.OK);

	}

결과

이미지를 클릭했을 때 다운로드 된다.

좋은 웹페이지 즐겨찾기