/**/ /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package com.snet.view.action; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; 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; /** */ /** * MyEclipse Struts * Creation date: 05-07-2008 * * XDoclet definition: * @struts.action */ public class DownloadFileAction extends Action ... { /**//* * Generated Methods */ /** *//** * Method execute * @param mapping * @param form * @param request * @param response * @return ActionForward * @throws IOException * @throws IOException */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)...{ //get the name of file to download or read String fileName=request.getParameter("fileName"); response.setContentType("application/OCTET-STREAM;charset=gb2312"); response.setHeader("Content-Disposition", "attachment;filename="+fileName); String context=request.getSession().getServletContext().getRealPath(""); File file=new File(context+"/uploadFiles/"+fileName); FileInputStream fis = null; BufferedOutputStream out=null; try ...{ fis = new FileInputStream(file); out = new BufferedOutputStream(response.getOutputStream()); byte[] buffer=new byte[1024]; int len; while((len=fis.read(buffer))!=-1)...{//read from the file on server out.write(buffer, 0, len); //write to client out.flush(); } } catch (FileNotFoundException e) ...{ try ...{ /**//* * Clears any data that exists in the buffer as well * as the status code and headers */ response.reset(); /**//*set content type once again*/ response.setContentType("text/html;charset=gb2312"); /**//*give error message to client*/ response.getWriter().println("文件未找到"); } catch (IOException e1) ...{ e1.printStackTrace(); } e.printStackTrace(); } catch (IOException e) ...{ e.printStackTrace(); }finally...{ try ...{ if(fis!=null)...{ fis.close(); } if(out!=null)...{ out.close(); } } catch (IOException e) ...{ e.printStackTrace(); } } return null; }}