SpringBoot生成docx文件并返回其Base64编码

2022年6月8日13:37:19

直接上源码,


    @ResponseBody
    @RequestMapping(value = "/getDocx", method = RequestMethod.GET)
    public String getDocumentBase64(@RequestBody JSONObject jsonParam, HttpServletResponse res){
        String fileName = "default.docx";

        String base64String = "";
        InputStream in = null;
        byte[] fileByte = null;

        try{
            JSONObject massageJson = jsonParam.getJSONObject("massage");
              // 生成乱码名
            String documentTreesJson = jsonParam.getJSONObject("data").toJSONString();
            fileName = massageJson.getString("userName") + "__" + massageJson.getString("fileSuffix")
                    + "__" + RandomUtil.getRandomString(32) + ".docx";
            // 生成docx 到fileName
            DocumentUtil.GenerateDocument(documentTreesJson, fileName);

            in = new FileInputStream(fileName);     //通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名 name 指定。
            int size = in.available();              // 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。
            fileByte = new byte[size];
            in.read(fileByte);                      //从此输入流中将最多 size 个字节的数据读入一个 imageByte字节 数组中。
            in.close();                             //关闭此文件输入流并释放与此流有关的所有系统资源。

        }catch (Docx4JException e){
            System.out.println("生成docx文件失败,Json:" + jsonParam.toJSONString());

        }catch (Exception e){
            System.out.println("创建输出流失败,Json:" + jsonParam.toJSONString());
            JSONObject massageJson = jsonParam.getJSONObject("massage");
            String documentTreesJson = jsonParam.getString("data");
            System.out.println(massageJson.toJSONString());
            System.out.println("data: " + documentTreesJson);

        } finally{
            BASE64Encoder encoder = new BASE64Encoder();

            base64String = encoder.encode(fileByte);// 对字节数组转换成Base64字符串
            if(!IOUtil.delFile(new File(fileName))){
                System.err.println("文件未成功删除");
            }
        }
//        System.out.println(base64String);
        return base64String;

    }
  • 作者:青冬
  • 原文链接:https://blog.csdn.net/qq_36610426/article/details/97402298
    更新时间:2022年6月8日13:37:19 ,共 1475 字。