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

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

  • 相关阅读:
    Java基本数据类型
    Java位运算符
    Java条件编译
    Groovy学习笔记(二)
    Groovy学习笔记(一)
    Java开发环境搭建
    Java接口回调
    [精华][推荐]CAS SSO单点登录服务端客户端实例
    CAS SSO单点登录实例
    分布式架构springcloud+redis+springmvc+springboot
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/springPrintFile.html
Copyright © 2011-2022 走看看