Spring Framework의 Resource를 사용하여 파일 다운로드를 처리하는 예제는 다음과 같습니다.
<mvc:resources mapping="/files/**" location="/WEB-INF/files/"/>
위의 설정에서는 /files/** URL 패턴으로 요청이 오면 /WEB-INF/files/ 디렉터리에서 파일을 찾도록 설정합니다.
@Controller
public class DownloadController {
@Autowired
private ResourceLoader resourceLoader;
@RequestMapping(value = "/download/{fileName:.+}", method = RequestMethod.GET)
public void download(@PathVariable("fileName") String fileName, HttpServletResponse response) throws IOException {
Resource resource = resourceLoader.getResource("/WEB-INF/files/" + fileName);
InputStream is = resource.getInputStream();
IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
}
}
위의 예제에서는 ResourceLoader를 사용하여 파일 경로를 Resource 객체로 생성하고, InputStream을 이용하여 파일을 읽어와 HttpServletResponse 객체의 OutputStream에 복사합니다. 마지막으로 response.flushBuffer()를 호출하여 파일을 클라이언트에 전송합니다.
위의 예제에서는 IOUtils.copy 메서드를 사용하여 InputStream과 OutputStream 간의 복사를 처리하였습니다. 이 외에도 자바의 IO 클래스들을 직접 사용하여 파일 입출력을 처리할 수 있습니다.