解决方案 »

  1.   

    这个SpringMVC没什么关系吧,我在jsp中做过一个图片的下载,你可能要修改下代码response.setContentType("application/x-download");   
     //application.getRealPath("/main/mvplayer/CapSetup.msi");获取的物理路径   
     String filedownload = request.getRealPath("/")+"/organization/img/"+"组织架构图.png";   
       String filedisplay = "组织架构图.png";   
        filedisplay = URLEncoder.encode(filedisplay,"UTF-8");   
        response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);   
      
      java.io.OutputStream outp = null;   
      java.io.FileInputStream in = null;   
      try   
      {   
      outp = response.getOutputStream();   
      in = new java.io.FileInputStream(filedownload);   
      
      byte[] b = new byte[1024];   
      int i = 0;   
      
      while((i = in.read(b)) > 0)   
      {   
       outp.write(b, 0, i);   
      }   
    outp.flush();   
    //要加以下两句话,否则会报错   
    //java.lang.IllegalStateException: getOutputStream() has already been called for this respons
    out.clear();   
    out = pageContext.pushBody();   
    }   
      catch(Exception e)   
      {   
      System.out.println("Error!");   
      e.printStackTrace();   
      }   
      finally   
      {   
      if(in != null)   
      {   
      in.close();   
      in = null;   
      } 
      
      if(in != null)   
      {   
      in.close();   
      in = null;   
      }  
      }   
    这些在网上找也很好找的
      

  2.   

    //下载方法
    private void downloadFile(File file){
    String fileName = file.getName();
    try {
    fileName = URLEncoder.encode(fileName, "UTF-8");
    } catch (UnsupportedEncodingException e1) {
    e1.printStackTrace();
    }
    contextPvd.getResponse().setContentType("application/zip");
    contextPvd.getResponse().addHeader("Content-Disposition", "attachment;filename=" + fileName);
    OutputStream outp = null;
    FileInputStream in = null;
    try {
    outp = contextPvd.getResponse().getOutputStream();
    in = new FileInputStream(file);
    byte[] b = new byte[1024];
    int i = 0; while ((i = in.read(b)) > 0) {
    outp.write(b, 0, i);
    }
    outp.flush();
    } catch (Exception e) {
    //log.error("", e);
    } finally {
    if (in != null) {
    try {
    in.close();
    in = null;
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    if (outp != null) {
    try {
    outp.close();
    outp = null;
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    }
      

  3.   

    下载文件,跟springmvc struts2 没关系,
    既然有路径了,路径对应的文件也有, 你为何不直接href=文件的路径,  然后就直接提示下载了
      

  4.   

    直接写到respone body里面不就拉倒啦,说实话
    文件上传下载跟用什么框架毛关系都没有,都是靠requestbody与reponsebody
    懂HTTP协议就okie
      

  5.   

    下载下来的文件怎么会已损坏,无法打开?亲,知道什么问题吗?给了setContentType("image/jpeg");也不行,知道什么原因吗?
      

  6.   

    谢谢各位,可能是基础太差,以前都是用struts2封装好的东西,自己写的时候就出问题了,问题解决,结贴给分。