spring mvc 文件下载怎么不成功呢?

在firebug下面我可以看到后台的2.9M的数据已经传到了前台,可是就是没有显示保存文件那样的对话框出来,真心不知道怎么回事了。。。。

 

下面是我网前台返回数据流的代码,希望大家能够帮个忙看看究竟怎么回事。。。

 

  @RequestMapping("downLoadSelect")
    public void downloadSelect(int[] ids, HttpServletResponse response, HttpServletRequest request){
        
            File zipFile = null;
            try {
                zipFile = tupianxxService.downLoad(request,response, ids);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            response.reset();
            response.setCharacterEncoding("utf-8");
            response.setContentType("APPLICATION/OCTET-STREAM"); 
            response.setHeader("Content-Disposition", "attachment;fileName=abc.zip");
            try {
                InputStream ins=new FileInputStream(zipFile);
                OutputStream bout = new BufferedOutputStream(response.getOutputStream());
                byte[] b=new byte[1024];
                int length;
                while((length=ins.read(b))>0){
                    bout.write(b,0,length);
                }
                bout.flush();
                bout.close();
                ins.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

 

文件下载 请参考
[url]https://github.com/zhangkaitao/es/blob/master/common/src/main/java/com/sishuok/es/common/web/controller/DownloadController.java[/url]

前台window.location.href跳转就好了噻

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment"
+ "; filename=" + fileName);

没试过,不知道 大小写是否区分 。。自己 测试去吧。

不清楚是什么问题,不过你可以这样试下:
1、加上:
response.addHeader("Content-Length", "" + zipFile.length());

2、修改:
response.setHeader("Content-Disposition", "attachment;fileName=abc.zip");

为:
response.addHeader("Content-Disposition", "attachment;fileName=abc.zip");

3、改代码顺序,这个清楚是否一定行
bout.flush();

bout.close();

ins.close();

把ins.close()放到前面,如果还不行可以试下去掉bout.flush()。

建议用这个试试
window.location.href=<%=contextPath%>+ 'zsch/tupianxx/downLoadSelect?ids='+ids
下载好像不能用AJAX