1. 程式人生 > >HttpServletResponse實現文件下載

HttpServletResponse實現文件下載

ava exception urlencode stack attach org work download tput

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.StringUtils;

/** * 文件下載 */ public class FileLoad { /** * 使用response返回文件流 */ public void loadFile(String filePath, HttpServletResponse response) { // 聲明工具類 BufferedInputStream in = null; BufferedOutputStream out = null; try { // 若路徑為空 if (StringUtils.isEmpty(filePath)) {
throw new Exception("invalid filepath of null."); } // 沒找到文件 File file = new File(filePath); if (!file.exists()) { throw new Exception("file not exist in path [" + filePath + "]"); } // 獲取文件名 String fileName = file.getName();
// 輸出文件流到瀏覽器 in = new BufferedInputStream(new FileInputStream(filePath)); out = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/x-download;charset=utf-8"); response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); byte[] buffer = new byte[8192]; int count = 0; while ((count = in.read(buffer, 0, 8192)) != -1) { out.write(buffer, 0, count); } out.flush(); file = null; } catch (Exception e) { e.printStackTrace(); } finally { closeStream(in, out); } } /** * 關閉輸入輸出流 */ public void closeStream(InputStream in, OutputStream out) { if (null != in) { try { in.close(); } catch (IOException e) { // e.printStackTrace(); } } if (null != out) { try { out.close(); } catch (IOException e) { // e.printStackTrace(); } } } }

HttpServletResponse實現文件下載