zoukankan      html  css  js  c++  java
  • SpringMVC把后台文件打印到前台

    实现效果如下:

    代码为:

    @RequestMapping(value = "/tools/printContract")
    public void cell(HttpServletResponse response,HttpServletRequest request,String outName) {
        //根据outName获取到保存在服务器上的文件
        String filePath = request.getSession().getServletContext().getRealPath(ImgUtil.TOOLS_PATH+ImgUtil.TOOLS_TXT)+'/'+outName+".txt";
        try(OutputStream out = response.getOutputStream()) {
            Date currentTime = new Date();
            SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd_HHmmss");
            String dateString = formatter.format(currentTime);
            //fileName是输出的文件的名字(不支持中文),包括了后缀
            String fileName = "EncryptFile_" + dateString + ".txt";
            byte[] bytes = FileEcodeUtil.file2byte(filePath);
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition","attachment;filename=" + fileName);
            response.setContentLength(bytes.length);
            out.write(bytes);
            out.flush();
        } catch (IOException e) {
        //e.printStackTrace();
        }
    }
    
    //上面用到的file2byte方法为:
    public static byte[] file2byte(String filePath) {
        byte[] buffer = null;
        File file = new File(filePath);
        try (FileInputStream fis = new FileInputStream(file);
             ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            buffer = bos.toByteArray();
        } catch (Exception e) {
            // e.printStackTrace();
        }
        return buffer;
    }

    需要注意:返回值的类型是void 而不是String,不能返回到某一个页面,否则服务器会抛出IllegalStateException异常,虽然在页面上表现不出来。

      java.lang.IllegalStateException: Cannot create a session after the response has been committed

    原创文章,欢迎转载,转载请注明出处!

  • 相关阅读:
    冒泡排序法
    选择排序法
    pyhanlp 停用词与用户自定义词典
    pyhanlp 分词与词性标注
    第八九章 正态分布与超越正态
    深入浅出统计学第七章 几何分布,二项分布,柏松分布
    深入浅出统计学 第六章 排列与组合
    深入浅出统计学 第四五章 离散概率的计算与分布
    R语言简介与案例
    深入浅出统计学 第二三章 量度
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/springPrintFile.html
Copyright © 2011-2022 走看看