使用Response下载文件示例


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1.获取文件路径
String realPath = "D:\\project\\servlet-main\\response\\src\\main\\resources\\头像.jpg";
// 2.获取文件名
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
// 3.设置请求头(支持文件下载的头部Content-Disposition)
resp.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));
// 4.获取下载文件的输入流:FileInputStream
FileInputStream inputStream = new FileInputStream(realPath);
// 5.创建缓冲区
int length = 0;
byte[] buffer = new byte[1024];
// 6.获取输入流对象:OutputStream
ServletOutputStream outputStream = resp.getOutputStream();
// 7.将流写入缓冲区,使用OutputStream将缓冲区中的数据输出到客户端
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
}