1.文件下载思路:
点击下载操作后,会将前端的数据传输到Controller,根据获得的数据(可能是文件id,文件name等等)去数据库
查询出文件的具体信息(文件的类型,文件的存储路径,文件大小等等),然后根据文件的路径,用输入流去读取数据,
通过HttpServletResponse对象response.getOutputStream得到一个输出流, 然后以流的形式将数据返回到浏览器。
需要设置头信息,去告知浏览器此次行为是下载。
1.获取文件相关信息
例如:文件的ID、文件的实际名称、文件的类型、文件的实际存储路径、文件的大小等(根据实际情况获取)
2.设置文件下载名称(需要有表示文件类型的后缀:.png/.gif/.pig等)
3.处理中文 下载名称 乱码问题
HttpServletRequest req msie:IE浏览器
通过req去获得浏览器的类型,根据浏览器类型设置不同的编码方式
4.设置响应头信息
response.setContentType("image/jpg") 根据文件实际类型进行设置
response.setHeader("Content-Disposition","attachment;filename="+filename):弹框效果,并设置下载文件名
//response.setContentLength(len);
//response.setCharacterEncoding(charset);
5.根据文件url,使用输入流读取文件
InputStream is = new FileInputStream(new File(url));
OutputStream os = response.getOutputStream();
IOUtils.copy(is, os);
//将数据以流的形式返回到浏览器
6.关流(准守 先开后关的原则)
先创建的流后关闭
这是一个简单的下载实现,下载tomcat上images文件夹下的FirstPS.jpg文件,文件信息直接在Controller处进行设置
这个是下载网络上的一张图片的代码