/**//* * 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; }}