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();//关闭

浙公网安备 33010602011771号