prader6

读取本地word 浏览器下载(设置编码格式)

复制代码
  String filePath = "C:\\word\\报告.doc";
        BufferedWriter bos = null;
        BufferedReader bis = null;
        String fileName = year + "年" + month + "报告.doc";

        try {
            char[] bytes = new char[1024];
            String userAgent = request.getHeader("user-agent").toLowerCase();
            if (userAgent.contains("msie") || userAgent.contains("like gecko")) {
                fileName = URLEncoder.encode(fileName, "UTF-8");
            } else {
                fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
            }
           response.setContentType("Application/x-msdownload;charset=utf-8");

            //告知客户端该文件不直接解析,采用附件形式打开
            response.setHeader("Content-Disposition", "attachment;filename="+fileName);
            response.setHeader("Pragma", "No-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);

            bis = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"UTF-8"));
            bos = new BufferedWriter(new OutputStreamWriter(response.getOutputStream()));

            while (bis.read(bytes, 0, bytes.length) != -1){
                bos.flush();
                bos.write(bytes, 0, bytes.length);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (bis != null) {
                    bis.close();
                }
                if (bos != null) {
                    bos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }


    }
复制代码

如果是用常规的文件字节流读取本地的文件,下载下来的word总是打不开。只有用设置读取的格式为“utf-8”后,下载下来的word才能打开。

posted on   prader6  阅读(398)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

导航

统计

点击右上角即可分享
微信分享提示