您的位置:首页 > Web前端 > JavaScript

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: