Servlet中实现文件下载
文件下载一看到文件就会想到用io流来实现,那怎么在Servlet中实现文件下载呢?首先找到图片所在位置然后写个前端页面,我搞个下载按钮效果比较直观注意 :web.xml中记得要添加个servlet-mapping创建了一个Servlet类叫:ImageServlet代码如下:package com.sc.controller;import javax.servlet.Ser...
·
文件下载
一看到文件就会想到用io流来实现,那怎么在Servlet中实现文件下载呢?
首先找到图片所在位置
然后写个前端页面,我搞个下载按钮效果比较直观
注意 :web.xml中记得要添加个servlet-mapping
创建了一个Servlet类叫:ImageServlet
代码如下:
package com.sc.controller;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
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.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
@WebServlet(name="download",urlPatterns = "/download.ii")
public class ImageServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取到资源的路径
String path = this.getServletContext().getRealPath("/images/55.jpg");
//读取资源
InputStream inputStream = new FileInputStream(path);
//获取到文件名,路径在电脑上保存是\\形式的。
String fileName = path.substring(path.lastIndexOf("\\") + 1);
//将文件名转码为中文,防止中文为乱码
fileName = URLEncoder.encode(fileName,"UTF-8");
//设置消息头,告诉浏览器,我要下载这个图片
response.setHeader("Content-Disposition", "attachment; filename="+fileName);
// response.setHeader("content-type","image/jpg");
//把读取到的资源写给浏览器
int len = 0;
byte[] bytes = new byte[1024];
//创建字节输出流
OutputStream outputStream = response.getOutputStream();
while ((len = inputStream.read(bytes)) >0) {
outputStream.write(bytes, 0, len);
}
//关闭资源
outputStream.close();
inputStream.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
注意:使用@WebServlet(name=“download”,urlPatterns = “/download.ii”)这个注解需要先在maven中添加两个依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!--引入Servlet结束-->
<!--引入jsp相关开始-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
然后启动tomcat ,点击下载按钮,就可以下载了,以上代码已经处理了文件名会有中文的格式的乱码问题。具体看代码!!
更多推荐
已为社区贡献2条内容
所有评论(0)