Struts2上传及下载

/**  

*struts2上传  

* 1.获得文件名,文件大小等  

* 2.获得文件描述  

* 3.获得上传文件当前路径  

* 4.设值  

* 5.重命名到当前路径  

* */  

public String upload()

{      

System.out.println(attach.getDesc());   

String appPath=ServletActionContext.getServletContext().getRealPath("/");      

attach.setUuid(5);   attach.setFileName(picFileName);   

attach.setFileExt(StringUtil.getFileExt(picFileName));   

attach.setFileSize(pic.length());   

attach.setFilePath("userFile/"+picFileName);   

attach.setUploader(1);   

attach.setUploadTime(new Date());   

attach.setDesc(attach.getDesc());     

 //重新命名此抽象路径名表示的文件  

 boolean flag=pic.renameTo(new File(appPath+"userFile/"+picFileName));   

if(flag){    System.out.println("重命名操作:"+flag);   }        

//模拟数据库   List ls=(List<Attachment>) ServletActionContext.getServletContext().getAttribute("attaches");   

if(ls==null){   

 ls=new ArrayList();    ServletActionContext.getServletContext().setAttribute("attaches",ls);   

}     

 ls.add(attach);      

return "attaList";  } 

 /*  

*struts2下载方式  

*/   

public InputStream getFileStream() throws FileNotFoundException{  

 int id=attach.getUuid();     

 Attachment attachment=null;

 List<Attachment> ls=(List<Attachment>) ServletActionContext.getServletContext().getAttribute("attaches");  

 for (Attachment temp : ls) {  

  if(id==temp.getUuid()){    

 attachment=temp;    

 break;   

 }   

}  

 String appPath=ServletActionContext.getServletContext().getRealPath("/");   

System.out.println(appPath+attachment.getFilePath());   

FileInputStream fis=new FileInputStream(appPath+attachment.getFilePath());   

return fis;

 }         

/*   

*普通下载  

 */   

//接收下载文件ID   

String id=request.getParameter("attach.uuid");     

 //模拟   

List<Attachment> ls=(List<Attachment>) getServletContext().getAttribute("attaches");     

 //比对   

Attachment attachment=null;   

for (Attachment temp : ls) {   

 if(id.equals(temp.getUuid()+"")){  

   attachment=temp;     break;    

  }

  }     

 response.reset();//清空   

response.setContentType("application/x-download");//指定  

 //设置编码  

response.addHeader("Content-Disposition", "attachment;filename="+java.net.URLEncoder.encode(attachment.getFileName(), "UTF-8"));

 //获得   

String appPath=this.getServletContext().getRealPath("/");  

 FileInputStream fis=new FileInputStream(appPath+attachment.getFilePath());      

byte data[] = new byte[1024];   int readed=0;      //写   

while((readed=fis.read(data))>0){

   response.getOutputStream().write(data);   

}   fis.close();//关闭

posted @ 2013-04-26 23:42  果然翁  阅读(129)  评论(0)    收藏  举报