解决方案 »

  1.   

    试试setContentType("application/octet-stream");
      

  2.   

    经测试,几句就搞定了,如下:
        @RequestMapping("abc.txt")
    @ResponseBody
    public byte[] downloadFile(HttpServletResponse resp) throws IOException{
    String filen=URLEncoder.encode("中文abc.txt", "UTF-8");
    resp.setHeader("Content-Disposition", "attachment;filename="+filen);
    return FileUtils.readFileToByteArray(new File("c:\\temp\\neg.txt"));
    }
    这时,客户端访问的是http://.../abc.txt,弹出的下载对话框显示的下载文件名是“中文abc.txt”。
      

  3.   


    忘了还有ResponseBody这个了。这个方法确实可以,但是能不能告诉我我的代码是哪里的问题。我换了上网的环境就可以了,但是在客户现场就是不行。不知道是什么原因。
      

  4.   


    忘了还有ResponseBody这个了。这个方法确实可以,但是能不能告诉我我的代码是哪里的问题。我换了上网的环境就可以了,但是在客户现场就是不行。不知道是什么原因。
    你那个理论上也肯定是可以的,但是为什么会报错了,我认为问题可能出在Content-Length上面。
    用我的那种方法时,spring自动给头部加上了Content-Length(你可以观察一下的确是有),而你那种完全是你手动操作,所以你不加就没有这个。
    谷歌比较智能遇到没有标识长度字段的响应时也能处理,但是IE有的版本比较笨,它没有得到长度这个值所以搞不清内容的长度到底是多少。我的看法。