Local 디렉토리에 있는 파일을 다운로드하는 예제 소스
** 컨트롤러
@RequestMapping(value="/demo/download.do")
public void download(
HttpServletRequest request
, HttpServletResponse response) throws Exception {
// 다운로드 파일 정보 조회
String downloadFilePath = "/tmp/original.jpg";
InputStream inputStream = getFileInputStream(downloadFilePath);
// HTTP 다운로드 프로토콜 정의
ServletContext context = request.getSession().getServletContext();
int contentLengt = inputStream.available();
setHttpDowndloadProtocol(context, response , downloadFilePath, contentLengt);
// 다운로드 파일 쓰기
OutputStream outStream = response.getOutputStream();
writeToResponse(inputStream, outStream);
inputStream.close();
outStream.close();
}
- 다운로드 파일 조회
private InputStream getFileInputStream(String downloadFilePath) throws FileNotFoundException {
File downloadFile = new File(downloadFilePath);
return new FileInputStream(downloadFile);
}
- HTTP 다운로드 프로토콜 정의
private void setHttpDowndloadProtocol(
ServletContext context
, HttpServletResponse response
, String downloadFilePath
, int contentLength) {
String mimeType = getMimeType(context, downloadFilePath);
response.setContentType(mimeType);
response.setContentLength(contentLength);
String contentDisposition = String.format("attachment; filename=\"%s\"", "download.jpg");
response.setHeader("Content-Disposition", contentDisposition);
}
private String getMimeType(
ServletContext context
, String downloadFilePath) {
String mimeType = context.getMimeType(downloadFilePath);
if (mimeType == null) {
mimeType = "application/octet-stream";
}
return mimeType;
}
- 다운로드 파일 쓰기
private void writeToResponse(
InputStream inputStream
, OutputStream outStream) throws IOException {
byte[] buffer = new byte[1024];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
}
'java > web' 카테고리의 다른 글
[web] - spring mvc (0) | 2014.12.22 |
---|---|
[web] 서블릿과 컨테이너 (0) | 2014.12.22 |
datepicker 사용자 정의 버튼 추가하기 (0) | 2014.10.23 |
[크롬] - 창 닫기 스크립트 (0) | 2013.09.02 |
[password] - 웹에서 아이폰 스타일로 패스워드 만들자 (0) | 2011.03.06 |