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();  

猜你喜欢

转载自blog.csdn.net/u014427540/article/details/80346082