programming/spring_security

[spring security] 파일 다운로드

labj 2014. 11. 17. 09:45

[spring security] 파일 다운로드


보안 또는 파일중복을 방지하려고 파일을 업로드 할 때 이름을 시스템이름으로 변경하여 저장합니다.

그런데 파일 위치는 보통 웹서버에 두지 않고 외부 접근 권한이 없는 폴더에 넣습니다. 

방법중에 하나입니다.

그림.png를 웹페이지에 잘 보여줍니다.

시스템파일명이 필요하다면 getPublicFile에서 db에 접근하여 파일명을 조회해서 가져오면 될 것입니다.


* /src/main/resources/message.properties

file.getUploadFilePath = c:/files


* /src/main/java/HomeController.java

@Autowired
protected MessageSourceAccessor messageBundle;    


@RequestMapping(value = "/files", method = RequestMethod.GET, produces = "application/octet-stream")
@ResponseBody
public FileSystemResource getPublicFile(
    @RequestParam(value = "name", required=true, defaultValue="" ) String name
    ,HttpServletResponse response
) {
    logger.debug("/name ... " + name );
    File f = new File(messageBundle.getMessage("file.getUploadFilePath") + "/" + name);
    response.setContentType("application/octet-stream");
    return new FileSystemResource(f);
}


* jsp

<img src="<c:url value='/files?name=그림.png'/>" />


[spring security] 파일 다운로드