用HttpServletResponse实现文件下载
要获取下载文件的路径获取下载文件的文件名让浏览器能够支持我们要下载的东文件获取下载文件的输入流创建缓冲区获取OutputStream对象将FileOutputStream写入到缓冲区,再使用OutputStream将缓冲区的数据输出到客户端文件目录结构在webapp目录下新建static文件夹,将图片放在static里新建一个FileDownload类,继承于HttpServletpackage
·
- 要获取下载文件的路径
- 获取下载文件的文件名
- 让浏览器能够支持我们要下载的东文件
- 获取下载文件的输入流
- 创建缓冲区
- 获取OutputStream对象
- 将FileOutputStream写入到缓冲区,再使用OutputStream将缓冲区的数据输出到客户端
文件目录结构
在webapp
目录下新建static
文件夹,将图片放在static
里
新建一个FileDownload
类,继承于HttpServlet
package com.tsingby;
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;
public class FileDownload extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 要获取下载文件的路径
String picturePath = this.getServletContext().getRealPath("/static/picture.png");
//获取文件名
String pictureName = picturePath.substring(picturePath.lastIndexOf("\\") + 1);
//设置消息头
resp.setHeader("Content-Disposition","attachment;filename"+pictureName);
//获取下载文件的输入流
FileInputStream fis=new FileInputStream(picturePath);
// 创建缓冲区
int len=0;
byte[] buffer = new byte[1024];
// 获取ServletOutputStream对象
ServletOutputStream out = resp.getOutputStream();
// 将FileOutputStream对象写入buffer,使用OutputStream将缓冲区的数据输出到客户端
while ((len=fis.read(buffer))>0){
out.write(buffer,0,len);
}
out.close();
fis.close();
}
}
注册Servlet
<servlet>
<servlet-name>FileDownload</servlet-name>
<servlet-class>com.tsingby.FileDownload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileDownload</servlet-name>
<url-pattern>/down</url-pattern>
</servlet-mapping>
启动tomcat,在浏览器地址栏后追加/down
,摁下回车,即可完成下载
更多推荐
已为社区贡献1条内容
所有评论(0)