반응형

자바 파일 다운로드 기능 구현할 수 있는 소스입니다.

package sample.a.b.c;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/download.do")
	public void fileDown(HttpServletRequest request, HttpServletResponse response) throws Exception {

		try {
			 // 파일명
			String fileName = "샘플 파일명.hwp";

			// 파일이 있는 경로
			String filePath = "D:\\webapps\\project\\document"; 
			
			File file = new File(filePath, fileName);
			
			int fileSize = (int) file.length();
			
			fileName = URLEncoder.encode(fileName, "UTF-8");
			fileName = fileName.replaceAll("\\+", "%20"); // 파일명에 띄어쓰기가 있을 때 + 를 공백으로 바꿔줌
			
			if(fileSize > 0){
				String encodedFileNm = "attachment; filename*=" + "UTF-8" + "''" + fileName;
				
				response.setContentType("application/octet-stream; charset=utf-8");
				
				response.setHeader("Content-Disposition", encodedFileNm);
				response.setContentLength(fileSize);
				
				BufferedInputStream in = null;
				BufferedOutputStream out = null;
				
				in = new BufferedInputStream(new FileInputStream(file));
				
				out = new BufferedOutputStream(response.getOutputStream());
				
				try {
					byte[] bf = new byte[4096];
					int br = 0;
					
					while((br = in.read(bf))!= -1){
						out.write(bf, 0, br);
						out.flush();
					}
				} finally {
					// 오류
				}
			}
					
		} catch (Exception e) {
			// 오류
		}
		
	}

 

이것도 역시나 파일 다운로드에만 필요한 소스이기 때문에 적절히 잘 활용해서 쓰시면 됩니다.

반응형

+ Recent posts