- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最近在做一个网站后台,用到了文件的下载,整理出来,以供日后查阅,也供大家参考。
1:首先创建一个jsp,我取名为:fileDownload.jsp
主要代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
%>
对上面的代码解释如下:
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:大功告成,可以测试运行了。