easy ui + servlet 的文件下载
一. 工具
1.JDK版本:1.6
2.myeclipse版本:myeclipse 10
3.前端框架:easy ui
二. 文件下载
1.文件上传
页面代码
<table class="easyui-datagrid" id="datalist"
data-options="fit:true,singleSelect:true,striped:true,rownumbers:true">
<thead data-options="frozen:true">
<tr>
<th data-options="field:'ck',checkbox:true"></th>
<th hidden data-options="field:'chuangjrID',sortable:true">${sys_key.chuangjrID}</th>
<th hidden data-options="field:'guanlID',sortable:true"></th>
<th hidden data-options="field:'fileListID',sortable:true"></th>
<th data-options="field:'chuangjrName',align:'center',sortable:true">${sys_key.chuangjrName}</th>
<th data-options="field:'chuangjTime',align:'center',formatter:function(value,row,index){return formattime(value,false);},sortable:true">${sys_key.chuangjTime}</th>
<th hidden data-options="field:'xiangmID',sortable:true">${sys_key.xiangmID}</th>
<th hidden data-options="field:'xiangmName',sortable:true">${sys_key.xiangmName}</th>
</tr>
</thead>
<thead>
<tr>
<th data-options="field:'filetitle',align:'center',sortable:true">文件标题</th>
<th data-options="field:'fileName',align:'center',sortable:true">文件名称</th> <!--得到文件在文件夹中的名字(后面下载需要用)-->
<th hidden data-options="field:'fileUrl',align:'center',sortable:true">文件</th>
<th data-options="field:'genzRemark',align:'center',sortable:true">备注</th>
</tr>
</thead>
</table>
提交的from表单
<form name="annexform" id="annexform" method="post" action="${sys_setting.url}Download.do" >
<input type="hidden" id="url" name="url" value="${sys_setting.url}"/>
<input type="hidden" id="fileUrl" name="fileUrl" value=""></input>
</form>
js代码
//下载文件
$("#submit_edit").click(function () {
var rows = $('#datalist').datagrid('getSelected');
if(rows==null){
art.dialog.alert("请选择要下载的文件!");
return false;
}
var flag = $("#in_flag").val()
$("#fileUrl").val(rows.fileUrl);
$("#annexform").submit();
});
servlet代码
package cn.djerp.core.tools;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.jms.Session;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;
@SuppressWarnings("serial")
public class Download extends HttpServlet {
/**
* 附件下载
*
* @author qx
*
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//PrintWriter out = response.getWriter();
String filename="";
// try{
filename = new String(request.getParameter("fileUrl").getBytes("iso-8859-1"),"UTF-8");
String nodepath = this.getClass().getClassLoader().getResource("/").getPath();
// 项目的根目录路径
String filePath = nodepath.substring(1, nodepath.length() - 16);
String usfile = "upload/annex/";
//创建file对象
File file=new File(filePath+usfile+filename);
if(file.exists()){
request.setAttribute("errorResult",errorResult);
//设置response的编码方式
response.setContentType("application/x-msdownload");
//写明要下载的文件的大小
response.setContentLength((int)file.length());
//解决中文乱码
response.setHeader("Content-Disposition","attachment;filename="+new String(filename.getBytes("gbk"),"iso-8859-1"));
//读出文件到i/o流
FileInputStream fis=new FileInputStream(file);
BufferedInputStream buff=new BufferedInputStream(fis);
byte [] b=new byte[1024];//相当于我们的缓存
long k=0;//该值用于计算当前实际下载了多少字节
//从response对象中得到输出流,准备下载
OutputStream myout=response.getOutputStream();
//开始循环下载
while(k<file.length()){
int j=buff.read(b,0,1024);
k+=j;
//将b中的数据写到客户端的内存
myout.write(b,0,j);
}
myout.flush();
myout.close();
}else{
//重定向转发到jsp
RequestDispatcher dispatcher=request.getRequestDispatcher("sys/pages/recordXiangmWjLoad.jsp");
dispatcher.forward(request,response);
}
}
public void init() throws ServletException {
}
}
web.xml代码
<servlet>
<servlet-name>Download</servlet-name>
<servlet-class>cn.djerp.core.tools.Download</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Download</servlet-name>
<url-pattern>/Download.do</url-pattern>
</servlet-mapping>