java-使用response文件下载

#根据文件的绝对路径和文件名下载:

/***
 * 传入文件名,文件绝对路径 下载文件
 * @param fileName
 * @param path
 * @param response
 * @throws FileNotFoundException
 * @throws IOException
 */
public static void downloaFile(String fileName,String path,HttpServletResponse response) throws FileNotFoundException, IOException {
		//文件名和路径前面已经传来了,所以不需要了
		//1.获取要下载的文件的绝对路径
		//String realPath = this.getServletContext().getRealPath("/download/1.JPG");
		//2.获取要下载的文件名
		//String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);


        //3.设置content-disposition响应头控制浏览器以下载的形式打开文件
        response.setHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8"));
        //4.获取要下载的文件输入流
        InputStream in = new FileInputStream(path);
        int len = 0;
        //5.创建数据缓冲区
        byte[] buffer = new byte[1024];
        //6.通过response对象获取OutputStream流
        OutputStream out = response.getOutputStream();
        //7.将FileInputStream流写入到buffer缓冲区
        while ((len = in.read(buffer)) > 0) {
            //8.使用OutputStream将缓冲区的数据输出到客户端浏览器
            out.write(buffer, 0, len);
        }
        in.close();

}

你可能感兴趣的:(java)