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