采用springmvc架构,只贴出关键代码,其他一概论之。

上传:

jsp页面


   上传用户x:
         上传文件1:
          


后台代码

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss");
String savePath =request.getSession().getServletContext().getRealPath("/WEB-INF/upload");
 File file = new File(savePath);
 if (!file.exists()) {
	 file.mkdir();
 }
 String message ="";
 try{
	  DiskFileItemFactory factory = new DiskFileItemFactory();
	  factory.setSizeThreshold(1024*100); 
	  factory.setRepository(file);
	  
	  ServletFileUpload upload = new ServletFileUpload(factory);
	  upload.setHeaderEncoding("UTF-8"); 
 List list = upload.parseRequest(request);
 
//正则匹配,过滤路径取文件名  
 String regExp = ".+\\\\(.+)$"; 
 Pattern p = Pattern.compile(regExp);
 
 String fileName="";
 for(FileItem item : list){
	 if(item.isFormField()){
		 String name = item.getFieldName();
         String value = item.getString("UTF-8");
         System.out.println(name + "=" + value);
	 }else{
		 String name = item.getName(); 
		 name = name.substring(name.lastIndexOf("\\")+1);
		  fileName = savePath+"/"+ sdf1.format(new Date()) + "_"+name;  
		 item.write(new File(fileName)); 
	 }
	
 }
  message = "文件上传成功!";
 }catch (Exception e) {
	 message= "文件上传失败!";
     e.printStackTrace();
}



文件下载

//获得文件名和文件路径
String name = map.get("name")+"";
String path = map.get("path")+"";

String filename= new String(name.getBytes("utf-8"),"iso8859-1");

File file = new File(path);
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
response.reset();
response.addHeader("Content-Disposition", "p_w_upload;filename=" + new String(name.replaceAll(" ", "").getBytes("utf-8"),"iso8859-1"));
response.addHeader("Content-Length", "" + file.length());
OutputStream os = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
os.write(buffer);// 输出文件
os.flush();
os.close();