基于struts 的实现文件的下载和删除功能

 第一步:先建立文件下载和删除的文件,代码如下:(FileDownLoad.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*,java.io.*,com.form.*"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>文件管理</title> </head> <body> <table width="343" border="1" align="center"> <tr> <td width="127"><table width="127" border="0"> <tr> <td height="39" class="STYLE">文件名</td> </tr> </table></td> <td colspan="2"><table width="201" border="0"> <tr> <td width="191" height="39" class="STYLE">操作</td> </tr> </table></td> </tr> <% //要下载的文件的路径 File dir=new File("E://save//"); File file[]=dir.listFiles(); //把所用的文件都列出来 for(int i=0;i<file.length;i++){ %> <tr> <td height="52"><table width="127" border="0"> <tr> <td height="42" class="STYLE"><%=file[i].getName()%></td> </tr> </table></td> <td width="94"><table width="94" border="0"> <tr> <td width="84" height="39" class="STYLE"><a href="/FileDownload_Delete.do?act=downLoad&filename=<%=file[i].getName()%>">下载</a></td> </tr> </table></td> <td width="100"><table width="100" border="0"> <tr> <td width="90" height="39" class="STYLE"><a href="/FileDownload_Delete.do?act=delete&filename=<%=file[i].getName()%>">删除</a></td> </tr> </table></td> </tr> <% } %> </table> </body> </html>

第二步:在建立Action,代码如下:(FileDownLoadAction.java)

package com.action; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class FileDownLoadAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { 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文件:在文件上传(上篇文章)基础上添加如下代码:

<form-beans> <form-bean name="download_delete" type="com.action.FileUploadAction"/> </form-beans> <action-mapping> <action path="/FileDownload_Delete" type="com.action.FileDownLoadAction" name="download_delete"/> </action-mappings>

第四步:写过滤器,请参照上篇文章(文件上传)的过滤器写法。

经过以上四步,文件的下载和删除功能可以实现了。

你可能感兴趣的:(exception,struts,File,delete,download,border)