게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
JAVA 에서 HTTP 로 파일 다운로드 관련되서 골머리를 썩고 있습니다
게시물ID : programmer_4357짧은주소 복사하기
작성자 : 행보관의삽질
추천 : 0
조회수 : 3364회
댓글수 : 3개
등록시간 : 2014/07/04 18:23:11
옵션
  • 본인삭제금지
HTTP 를 쓰는 것이 처음이라 그런지 모르는 것이 많아서 질문드립니다

request 와 respons 를 이용해서 파일다운로드를 구현하려 하는데

잘 안 되는 부분이 생겨서 염치 불구하고 질문글 올립니다

구현하려고 하는 것은

1. 여러개의 파일을 한꺼번에 다운받아야 하며
2. 파일 다운로드 시에 저장하시겠습니까? 라는 팝업창(?) 이 나오지 않아야 합니다
3. 서버에 저장되어 있는 파일을 사용자PC 에 저장하려고 합니다

그래서 다음과 같이 구현했습니다

for 문이 돌아가고 그 안에서
fileDownload 함수가 호출됩니다
해당 함수에는 다운로드에 필요한 변수값들이 들어가게 되고요

함수는 다음과 같습니다

// create file. 
File f = new File(filepath+fileName);
// set for download excel file.
String contentType = request.getContentType();
response.setContentType("x-msdownload");
if (contentType == null) {
if (request.getHeader("user-agent").indexOf("MSIE 5.5") != -1)
response.setContentType("doesn/matter;");
else
response.setContentType("application/octet-stream");
} else {
response.setContentType(contentType);
}
response.setHeader("Content-Transfer-Encoding:", "binary");
response.setContentType("application/vnd.ms-excel;charset=euc-kr");
response.setHeader("Content-Disposition", "filename=" + new String(fileName.getBytes("ksc5601"), "8859_1")  + ";");
response.setHeader("Content-Length", "" + f.length());
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1;");
byte b[] = new byte[1024];
BufferedInputStream fin = new BufferedInputStream(new FileInputStream(f));
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
try{
int read = 0;
while ((read = fin.read(b)) != -1)
{
outs.write(b,0,read);
}
}catch (Exception e){
}finally{
if (outs!=null) outs.close();
if (fin!=null) fin.close();
}



해당 구문을 돌리면 일단 에러는 나타나지 않습니다
제가 모르는 에러가 있는지 모르겠지만 예상 가능한 에러는 for 문 밖에서 죄다 catch 로 걸러내고 있습니다
고수 분들의 조언을 좀 듣고 싶습니다
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호