第一步:先建立文件下载和删除的文件,代码如下:(FileDownLoad.jsp)
第二步:在建立Action,代码如下:(FileDownLoadAction.java)
String act=request.getParameter("act");
if(act.equals("downLoad")){
return downLoad(mapping,form,request,response);
}else if(act.equals("delete")){
return delete(mapping,form,request,response);
}
return mapping.findForward("index");
}
/**
* 用于下载文件
*/
public ActionForward downLoad(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
String fileName=new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
OutputStream fos=null;
InputStream fis=null;
String filepath="E://save//"+fileName;
File uploadFile=new File(filepath);
//获得文件的输入流
fis=new FileInputStream(uploadFile);
bis=new BufferedInputStream(fis);
//获得文件的输出流
fos=response.getOutputStream();
bos=new BufferedOutputStream(fos);
//这句代码很关键,可以确保下载的提示框中显示的是中文
response.setHeader("Content-disposition","attachment;filename="+URLEncoder.encode(fileName,"utf-8"));
int bytesRead=0;
//Buffer用来缓冲数据
byte[] buffer=new byte[8192];
while((bytesRead=bis.read(buffer,0,8192))!=-1){
//把Buffer缓冲中的数据通过输出流,写到文件中。
bos.write(buffer,0,bytesRead);
}
bos.flush();
fis.close();
bis.close();
fos.close();
bos.close();
return null;
}
/**
* 用于删除文件
*/
public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
String fileName=new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
System.out.println("delete filename:"+fileName);
String path="E://save//";
boolean flag=true;
try{
File file=new File(path);
File[] f=file.listFiles();
for(int i=0;i<f.length;i++){
if(f[i].getName().equals(fileName)){
//删除文件
f[i].delete();
}
}
}catch(Exception e){
e.printStackTrace();
flag=false;
}
if(flag){
return mapping.findForward("deleteSuccess");
}else{
return mapping.findForward("deleteFail");
}
}
}
第三步:写配置struts-config.xml文件:在文件上传(上篇文章)基础上添加如下代码:
第四步:写过滤器,请参照上篇文章(文件上传)的过滤器写法。
经过以上四步,文件的下载和删除功能可以实现了。