以流的形式下载文件

112 阅读1分钟
public static void downloadExcel(HttpServletResponse response, String filename, String path) throws Exception {
    try {
        // 以流的形式下载文件。
        BufferedInputStream fis = new BufferedInputStream(new FileInputStream(path));
        byte[] buffer = new byte[fis.available()];
        fis.read(buffer);
        fis.close();
        // 清空response
        response.reset();
        OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
        response.setContentType("*");
        response.setHeader("Content-Disposition", "attachment;filename="
                + URLEncoder.encode(filename + ".xlsx", "UTF-8"));
        response.setHeader("fileName", new String((filename + ".xlsx").getBytes("UTF-8")));
        response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
        toClient.write(buffer);
        toClient.flush();
        toClient.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}