jsp+servlet文件下载
2017-10-10 13:52
381 查看
要下载的文件a.zip位于file目录下:
方式一:
1、DownServlet
package cn.sz.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String fileName = request.getParameter("filename");
//获取要下载的文件所在目录的路径
String dirPath = getServletContext().getRealPath("/file");
File dirFile = new File(dirPath);
//获取要下载的文件
File file = new File(dirFile, fileName);
if (!file.exists()) {
response.getWriter().println("文件" + fileName + "不存在");
return;
}
String encode = URLEncoder.encode(fileName, "UTF-8");;//解决中文名称乱码问题
//重要参数:设置响应头,控制浏览器下载该文件
response.setHeader("content-disposition", "attachment;filename=" + encode);//浏览器保存的文件名
//读取要下载的文件,保存到文件输入流
FileInputStream fis = new FileInputStream(file);
//创建输出流
ServletOutputStream out = response.getOutputStream();
//创建缓冲区
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
//关闭文件输入流
fis.close();
//关闭输出流
out.close();
}
}
2、web.xml
<servlet>
<servlet-name>DownServlet</servlet-name>
<servlet-class>cn.sz.hcq.servlet.DownServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownServlet</servlet-name>
<url-pattern>/DownServlet</url-pattern>
</servlet-mapping>
3、down.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding
4000
="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<h1>文件下载</h1>
<form action="DownServlet" method="get">
<!-- 要下载的文件(a.txt) -->
<input type="hidden" name="filename" value="a.txt">
<button>点击下载</button>
</form>
</body>
</html>
结果截图:
方式二:
直接在浏览器请求或作为超链接或使用JS的location对象请求
直接请求文件的路径:http://localhost:8080/Upload/file/a.zip
方式一:
1、DownServlet
package cn.sz.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String fileName = request.getParameter("filename");
//获取要下载的文件所在目录的路径
String dirPath = getServletContext().getRealPath("/file");
File dirFile = new File(dirPath);
//获取要下载的文件
File file = new File(dirFile, fileName);
if (!file.exists()) {
response.getWriter().println("文件" + fileName + "不存在");
return;
}
String encode = URLEncoder.encode(fileName, "UTF-8");;//解决中文名称乱码问题
//重要参数:设置响应头,控制浏览器下载该文件
response.setHeader("content-disposition", "attachment;filename=" + encode);//浏览器保存的文件名
//读取要下载的文件,保存到文件输入流
FileInputStream fis = new FileInputStream(file);
//创建输出流
ServletOutputStream out = response.getOutputStream();
//创建缓冲区
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
//关闭文件输入流
fis.close();
//关闭输出流
out.close();
}
}
2、web.xml
<servlet>
<servlet-name>DownServlet</servlet-name>
<servlet-class>cn.sz.hcq.servlet.DownServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownServlet</servlet-name>
<url-pattern>/DownServlet</url-pattern>
</servlet-mapping>
3、down.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding
4000
="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body>
<h1>文件下载</h1>
<form action="DownServlet" method="get">
<!-- 要下载的文件(a.txt) -->
<input type="hidden" name="filename" value="a.txt">
<button>点击下载</button>
</form>
</body>
</html>
结果截图:
方式二:
直接在浏览器请求或作为超链接或使用JS的location对象请求
直接请求文件的路径:http://localhost:8080/Upload/file/a.zip
相关文章推荐
- 文件上传和下载(一)--【jsp+servlet】
- Servlet和Jsp实现原生的上传与下载文件
- jsp + servlet 通过a 标签下载文件
- JSP/Servlet文件上传与下载
- jsp/servlet实现文件上传下载
- jsp+servlet用底层代码实现文件上传下载
- j2ee,jsp,servlet文件下载服务器端
- Jsp/Servlet:实现文件上传与下载
- 关于JSP/Servlet文件上传与下载
- jsp+servlet实现文件的上传和下载
- 使用jxl,Servlet,JSP 动态生成excel文件并提示下载的简单方法
- Jsp+Servlet实现文件上传下载(二)--文件列表展示
- Jsp/Servlet:实现文件上传与下载
- 用JSP+servlet实现文件的上传与下载
- 访问JSP文件或者Servlet文件时提示“下载”
- jsp实现Servlet文件下载的方法
- jsp+servlet实现文件下载
- SERVLET与JSP_文件上传下载(4)-java
- 如何使 FlashGet "正常合法" 下载 Session 中的自定义文件链接呢? JSP/Servlet 实现!
- 用JSP+servlet实现文件的上传与下载