直接上源码,
@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; }