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