본문으로 바로가기

파일 다운로드 기본

category Backend/Java 2019. 11. 11. 12:00
반응형

파일 다운로드 기본


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// ajax 통신으로는 다운로드가 안되길래 요청 페이지에서 JS에 location.href = "다운로드경로?파라미터" 형식으로 해결
// 1.5 이후에서는 ajax로 다운로드 처리했었는데...
// 참고로 자바버전 1.5에서 함 (이후 버전은 무지 쉽게 되는데 1.5는 왜이리 잘안되던지...)

InputStream is = null; BufferedInputStream bis = null; BufferedOutputStream bos = null;
 
File f = new File(filePath);
if(!f.exists()) {
%>
  <script type="text/javascript">
    alert("파일이 존재하지않음.\n다운로드 실패\n관리자에게 문의바랍니다.");
    location.href = "${pageContext.request.contextPath}/manager/aSupportBusinessOnlineApply/supportBusinessOnlineApplyList.jsp";
  </script>
<%
    return;
}
 
String name = f.getName();
 
if(fileRealName == null) {
  fileRealName = name;
}
 
// 최근들어 이거 두줄안하면 에러남 이미 요청했다면서.. 그래서 비워주니 됨
out.clear();
out = pageContext.pushBody();
 
response.reset();
// 파일형식 정보 설정
response.setHeader("Content-Type", fileType + "; charset=UTF-8");
String encFileName = URLEncoder.encode(fileRealName, "UTF-8");
response.setHeader("Content-Disposition""attachment; filename=" + encFileName + ";");
response.setHeader ("Content-Length"""+fileSize);
response.setContentLength((int) fileSize);
 
is = new FileInputStream(f);
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(response.getOutputStream());
 
byte[] buffer = new byte[(int)f.length()];
 
int length = 0;
 
while((length = bis.read(buffer)) != -1) {
    bos.write(buffer, 0length);
}
bos.flush();
if(bos != null) bos.close();
if(bis != null) bis.close();
if(is != null) is.close();




반응형

'Backend > Java' 카테고리의 다른 글

Struts2 textfield Null 인 경우  (0) 2020.02.17
게시판 번호 역순 출력  (0) 2019.12.12
cos.jar 이용한 다중 업로드 및 파일명 변경  (0) 2019.11.08
String Encoding Check  (0) 2019.09.26
Jar 압축 및 압축풀기  (0) 2019.08.20