Java

[JAVA] 단일 파일 다운로드

유호야 2021. 9. 3. 12:53
반응형

가장 간단하게 다운로드 하는 방법이

<a href="경로" download></a>

라고 들었으나 이상하게 나는 다운로드가 실행되는 것이 아니라 

창에서 경로 이동이 되는 현상이 있었다. 

 

그래서 일단 제쳐두고 찾아본 것이 단일 파일 다운로드 코드

@RequestMapping("fileDownload.do")
 public void test(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {

  String dFile = "테스트.txt";
  String upDir = "D:/upload/";
  String path = upDir+File.separator+dFile;
  
  File file = new File(path);

  String userAgent = request.getHeader("User-Agent");
  boolean ie = userAgent.indexOf("MSIE") > -1 || userAgent.indexOf("rv:11") > -1;
  String fileName = null;
  
  if (ie) {
   fileName = URLEncoder.encode(file.getName(), "utf-8");
  } else {
   fileName = new String(file.getName().getBytes("utf-8"),"iso-8859-1");
  }
  
  response.setContentType("application/octet-stream");
  response.setHeader("Content-Disposition","attachment;filename=\"" +fileName+"\";");
  
  FileInputStream fis=new FileInputStream(file);
  BufferedInputStream bis=new BufferedInputStream(fis);
  ServletOutputStream so=response.getOutputStream();
  BufferedOutputStream bos=new BufferedOutputStream(so);
  
  byte[] data=new byte[2048];
  int input=0;
  while((input=bis.read(data))!=-1){
   bos.write(data,0,input);
   bos.flush();
  }
  
  if(bos!=null) bos.close();
  if(bis!=null) bis.close();
  if(so!=null) so.close();
  if(fis!=null) fis.close();
 }
}

 

출처

 

반응형

'Java' 카테고리의 다른 글

[줌 클론코딩] #0.1 Requirements  (0) 2022.02.09
JDK vs JRE  (0) 2021.10.27
[Java] String, (toString), valueOf  (0) 2021.08.10
[JAVA] 버블정렬  (0) 2021.05.28
[JAVA] JVM의 메모리 구조  (0) 2021.05.28