解决方案 »

  1.   

    package com; import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.OutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; 
    import com.opensymphony.xwork2.ActionContext; 
    import com.opensymphony.xwork2.ActionSupport; public class DownAction extends ActionSupport{      //要下载的文件名 
         private String filename; 
         
         
         //此方法封装完毕直接调用完成下载 f:要下载的文件 filename:下载的文件名 
         public void down(File f,String filename,HttpServletResponse response) 
         { 
         response.reset(); 
         response.setContentType("image/jpeg");//设置下载文件的类型 
         response.setHeader("content-disposition","attachment; filename="+filename); //设置下载的文件名 
         long fileLength=f.length(); 
         String length1=String.valueOf(fileLength); 
         response.setHeader("Content_Length",length1); //下载文件的大小 
         InputStream in=null; 
         OutputStream out = null; 
         try{ 
         in = new FileInputStream( f ); 
         out = response.getOutputStream(); 
         byte[] buffer = new byte[2097152]; 
         int ins = in.read(buffer);//读取字节到buffer中 
         
         //ins == -1 时 。就已经是文件的结尾了 
         while ( ins != -1 ) { 
         out.write(buffer, 0, ins);//将缓存buffer中的数据写到文件中 
         ins = in.read(buffer); 
         } 
         in.close(); 
         out.flush(); 
         out.close(); 
         }catch (Exception e) { 
             System.out.println("--下载发生异常--"); 
             try { 
                         in.close(); 
                         out.flush(); 
                         out.close(); 
                     } catch (IOException e1) { 
                         System.out.println("--关闭发生异常--"); 
                         in = null; 
                         out = null; 
                         e1.printStackTrace(); 
                     } 
              
                 } 
         } 
         
         public void download() 
         { 
                 ActionContext context=ActionContext.getContext(); 
                 //得到response对象 
                 HttpServletResponse response=(HttpServletResponse)context.get(ServletActionContext.HTTP_RESPONSE); 
                 //得到下载文件路径 upload文件夹下 
                 String path=ServletActionContext.getRequest().getRealPath("/upload")+"\\"+this.getFilename(); 
                 File f = new File(path); 
         
                 down(f,this.filename,response); 
         } 
            public String getFilename() { 
                return filename; 
            }         public void setFilename(String filename) { 
                this.filename = filename; 
            } 
         
         }