文档库 最新最全的文档下载
当前位置:文档库 › jsp+servlet实现文件的下载

jsp+servlet实现文件的下载

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

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:大功告成,可以测试运行了。




相关文档