easy ui + servlet 的文件下载

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> 
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值