ChenDaShu大叔 2016-01-14 02:29 采纳率: 0%
浏览 2644
已结题

文件后缀名乱码怎么解决..

今天遇到一个奇葩需求,文件后缀名是中文的.
例子:文件名.后缀名
文件名不会乱码,但是后缀名会乱码,求大神指点..
后台是java的.
而且就ie8不行,使用其他浏览器,以及高版本ie显示正常.

 @RequestMapping("/download")
    public HttpServletResponse download(String fileName, HttpServletRequest request,
            HttpServletResponse response,String fileUrl) throws Exception {
        try {
            //获得文件
            File file = new File(fileUrl);

            //获取文件名
            fileName = URLDecoder.decode(fileName,"utf-8");

            //获得文件后缀名
            String ext = fileName.substring(fileName.indexOf(".")+1).toUpperCase();

            //以流的形式下载文件
            InputStream is = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = new byte[is.available()];
            is.read(buffer);
            is.close();

            //设置response header
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes()));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return response;
    }

图片说明图片说明

  • 写回答

4条回答

  • 91program 博客专家认证 2016-01-14 02:36
    关注

    调试一下看看代码中与文件名相关的变量的值是否正确?
    如果正确,可能是某些函数对文件名编码的要求。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题