HttpServletResponse實現文件下載
阿新 • • 發佈:2018-02-09
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實現文件下載