javaweb文件下载

String filepath = this.getServletContext().getRealPath("/WEB-INF/upload");
		JSONObject jsonObject=new JSONObject();
		JSONArray jsonArray=new JSONArray();
		Map<String,String> map=new HashMap<String,String>();
		getAllFiles(new File(filepath), map);
		String key=null;
		String value=null;
		Iterator iter=map.keySet().iterator();
		
		
		while(iter.hasNext())
		{
			key=(String)iter.next();
		    value=(String)map.get(key);
			jsonObject.put("file_name", key);
			StringBuffer sb=new StringBuffer("<a href='FileDownLoadServlet?filename=");
			sb.append(value+"'>下载</a>");
			jsonObject.put("file_url", sb.toString());
			jsonArray.add(jsonObject);
		}
		JSONObject result=new JSONObject();
		result.put("rows", jsonArray);
		PrintDatatoBrowser printDatatoBrowser=new PrintDatatoBrowser();
		printDatatoBrowser.datatobrowser(response, result);
	}
	private void getAllFiles(File filePath, Map map)
	{
		   if(!filePath.isFile())
		   {
			   File[] files=filePath.listFiles();
			   for(File file:files)
			   {
				   getAllFiles(file,map);
			   }
		   }else{
			   String fileName=filePath.getName().substring(filePath.getName().lastIndexOf("_")+1);
			   map.put(fileName, filePath.getName());

		   }
	}

文件下载功能实现:

String filename =new String(request.getParameter("filename").getBytes("ISO-8859-1"),"utf-8"); 
		 //设置文件MIME类型  
        response.setContentType(getServletContext().getMimeType(filename));  
        //设置Content-Disposition 
        String file_name=filename.substring(filename.lastIndexOf("_")+1);
        response.setHeader("Content-Disposition", "attachment;filename="+new String( file_name.getBytes("utf-8"), "ISO8859-1"));  
        //读取目标文件,通过response将目标文件写到客户端  
        //获取目标文件的绝对路径  
        String fullFileName = getServletContext().getRealPath("/WEB-INF/upload/" + filename);  
          
        //读取文件  
        InputStream in = new FileInputStream(fullFileName);  
        OutputStream out = response.getOutputStream();  
          
        //写文件  
        int len=0; 
        byte[] buffer=new byte[1024];
        while((len=in.read(buffer))>0)  
        {  
            out.write(buffer,0,len);  
        }  
          
        in.close();  
        out.close();  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值