HttpServletResponse下载文件
写servlet类继承接口,重写doGet方法
前置:
将待下载文件放入项目下,此处将图片放在了resources目录下
步骤:
明确待下载文件路径:可以写绝对路径,因为默认的相对路径可能与实际存储路径不符
明确文件名称:可以截取 文件路径字符串,最后一个\之后的字符,即文件名,\需要转义,写为\\
设置内容格式:可以是图片等格式
设置可以下载文件的请求头:设置头字段,将内容作为附件处理。后面指定内容,文件名为我们的文件名
将文件转化为流:文件转为输入流的形式
写缓冲区:建立一个byte单位的缓冲区
写输出流:初始化一个输出流
将文件流读入缓冲区,输出流输出:
将文件流写入缓冲区,输出流输出,直到文件字节全部读入,输出完成
关闭输入输出流:保证安全性
package org.example.HttpServletResponse;import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.Buffer;public class Respones extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String realpath = "D:\\IdeaProjects\\maven_empty\\HttpServletResponse\\src\\main\\resources\\AA.png";String Filename = realpath.substring(realpath.lastIndexOf("//") + 1);resp.setContentType("image/png");resp.setHeader("Content-Disposition", "attachment; filename=" + Filename);FileInputStream in = new FileInputStream(Filename);byte[] buffer = new byte[1024];ServletOutputStream out = resp.getOutputStream();int len = 0;while((len=in.read(buffer))!=-1){out.write(buffer, 0, len);}in.close();out.close();}
}
完成后,在项目的WEBINF-web.xml文件下注册servlet
运行后,更新同步maven完成打包
重新部署Tomcat里的包,运行后输入正确url即可
