jsp+servlet实现文件的下载

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最近在做一个网站后台,用到了文件的下载,整理出来,以供日后查阅,也供大家参考。

1:首先创建一个jsp,我取名为:fileDownload.jsp

主要代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
%>




java基础知识




对上面的代码解释如下:



123代表的是创建的整个项目的名称。

fileDownload是随意起的名称,为了配置xml时用的。

?fileName=java基础知识.txt是传给服务器fileName的名称。

2:创建一个servlet,我取名为FileDownloadServlet

代码如下:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = request.getParameter("fileName"); // 获取文件名称
filename = new String(filename.getBytes("ISO-8859-1"), "utf-8");// 解決中文乱码问题

String path = getServletContext().getRealPath("/fileDownload/" + filename);// 获取要下载文件的全路径地址
response.setContentType(this.getServletContext().getMimeType(filename));// 文件下载设置
response.addHeader("Content-Disposition", "attachment,filename=" + filename);
FileInputStream fis = new FileInputStream(path);// 创建文件的输入流
OutputStream os = response.getOutputStream();// 得到一个文件输出流,可以向浏览器输出数

int len = 0;// 表示实际每次读取多少个字节
byte[] buff = new byte[1024];// 创建一个缓冲字节数组
while ((len = fis.read(buff)) > 0) {
os.write(buff, 0, len);
}
fis.close();// 关闭资源
os.flush();
os.close();

}
}
3:配置WEB-INF下的web.xml,添加如下内容


fileDownload
com.123.servlet.FileDownloadServlet


fileDownload
/fileDownload


4:大功告成,可以测试运行了。




相关文档
最新文档