前言
基于的环境:maven
使用的编译器:IDEA
一、文件下载的步骤
大概的流程图:
具体步骤:
1.我们需要获取到下载文件的路径
String realPath = "路径";
2.获取下载文件的文件名
String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);
3.我们最好将文件名进行utf-8的编码,防止下载显示的文件名中文乱码
fileName = URLEncoder.encode(fileName,"utf-8");
4.设置响应头(Content-Disposition),使的浏览器可以支持下载
resp.setHeader("Content-Disposition", "attachment;filename="+fileName);
5.获取下载文件的输入流
FileInputStream in = new FileInputStream(realPath);
6.设置缓冲区
int len = 0;
byte[] buffer = new byte[1024];
7.获取response的OutputStream对象
ServletOutputStream out = resp.getOutputStream();
8.将6中的输入流中的内容写入7中的OutputStream中,响应给浏览器
while ((len = in.read(buffer))!=-1){
out.write(buffer,0,len);
}
9.关闭资源
out.close();
in.close();
二、代码
package com.stdpei;
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.net.URLEncoder;
/**
* @author huxuehao
* @create 2021-06-10-13:45
*/
public class ServletDown extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取路径
String realPath = "D:\\Java\\IDEA\\ideaProject\\huStrat\\dome1\\src\\main\\resources\\图片.jpg";
//获取文件名
String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);
//文件名进行utf8编码
fileName = URLEncoder.encode(fileName,"utf-8");
//设置请求头,使得浏览器可以支持我们下载文件(固定写法)
resp.setHeader("Content-Disposition", "attachment;filename="+fileName);
//获取文件的输入流
FileInputStream in = new FileInputStream(realPath);
//获取resp的输出流
ServletOutputStream out = resp.getOutputStream();
//建立缓冲区
int len = 0;
byte[] buffer = new byte[1024];
//完成读写文件
while ((len = in.read(buffer))!=-1){
out.write(buffer,0,len);
}
//关闭资源
out.close();
in.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
super.doPost(req, resp);
}
}