前端下载文档的java工具类
package com.ry.project.util.commUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.*;
import java.util.Map;
public class WordUtil {
private Configuration configuration = null;
public WordUtil() {
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
}
//指定下载路径
public void createDoc(Map<String, Object> dataMap, String fileName) throws UnsupportedEncodingException {
configuration.setClassForTemplateLoading(this.getClass(), "/");
Template doct = null;
try {
doct = configuration.getTemplate("infoModel.ftl", "utf-8");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File outfile = new File(fileName);
Writer out = null;
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(outfile);
OutputStreamWriter oWriter = new OutputStreamWriter(outputStream, "UTF-8");
out = new BufferedWriter(oWriter);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
doct.process(dataMap, out);
out.close();
outputStream.close();
} catch (TemplateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//不指定下载路径,,,默认浏览器下载,需要在代码中设置请求头
public void createDoc(Map<String, Object> dataMap, OutputStream outfil) throws UnsupportedEncodingException {
configuration.setClassForTemplateLoading(this.getClass(), "/");
System.out.println(">>>>>class:" + this.getClass());
Template doct = null;
try {
doct = configuration.getTemplate("model.ftl", "utf-8");
} catch (IOException e) {
e.printStackTrace();
}
Writer out = null;
OutputStreamWriter oWriter = new OutputStreamWriter(outfil, "UTF-8");
out = new BufferedWriter(oWriter);
try {
doct.process(dataMap, out);
System.out.println("《《《《《《《《下载结束》》》》》");
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
response.reset();//清除空白行纺织报错
response.setHeader("Access-Control-Allow-Origin", "*");//所有域都可以跨
response.setHeader("Content-Type", "application/octet-stream;charset=UTF-8");//二进制 流文件
response.setHeader("Content-Disposition", "attachment;filename=" + endCodeFileName+".doc");//下载及其文件名
response.setHeader("Connection", "close");//关闭请求头连接
//设置文件在浏览器打开还是下载
response.setContentType("application/x-download");
}
前端下载文档的java工具类的更多相关文章
- Java Windows下读取注册表的工具类
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- Java工具类——数学相关的类
Java工具类--数学相关的类 在上一篇文章中,我们系统学习了 Java 里面的包装类,那么这篇文章,我们就来学习一下Java提供好的类--数学相关的类. 一.数学类介绍 在最早期学习 Java 基础 ...
- java工具类系列 (四.SerializationUtils)
java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...
- 下载文档--Struts2中国的文件下载被显示为空间的问题
下载文档--Struts2中国人似乎是空文件下载格问题 前言:近期公司项目中用到文件下载,依据底层,决定使用struts2的文件下载模式. 乱码大多数都攻克了,竟然出现中文文件下载时,中文文字显示为空 ...
- 排名前 16 的 Java 工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- 干货:排名前16的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- Java工具类:给程序增加版权信息
我们九天鸟的p2p网贷系统,基本算是开发完成了. 现在,想给后端的Java代码,增加版权信息. 手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...
随机推荐
- Allure测试框架 python
关于Allure Allure是一个report框架,可以基于一些测试框架生成测试报告,比较常用的一般是Junit/Testng框架: Allure 生成的报告样式简洁美观,同时又支持中文: Allu ...
- Linux虚拟机与主机网络连接配置与文件传输
网络配置 对于VMware虚拟机 1. 设置linux系统的网络配置,如下(NAT为默认配置,这里采用这一配置) 2. 主机中配置本地连接-属性-共享-勾选红框配置项,如下: 3.重启虚拟机. ...
- 斐波那契数列——Python实现
# 功能:求斐波那契数列第 n 个数的值 # 在此设置 n n = 30 print('\n');print('n = ',n) # 代码生成 Fibonacci 序列,存于数组A A = [0] ...
- element UI rules prop对应关系
- Find-set-root-ignore-floppies-ignore-cd /bootmgr 解决办法(用win 7安装盘)
出现标题此种现象,一般是mgr引导程序丢失有关,现在排除bootloader 选择是硬盘引导, 然后修改为cd盘引导,并重启,在win7安装程序启动后,选择修复系统. 打开相应的commnd,并执行如 ...
- 🔥 LeetCode 热题 HOT 100(11-20)
20. 有效的括号 class Solution { public boolean isValid(String s) { Map<Character, Character> map = ...
- noip模拟29[简单的板子题](虽然我不会)
\(noip模拟29\;solutions\) 这次考试给我最大的伤害,让我意识到了差距 这场考试可以说是非常的简单,就是简单到,看两眼,打个表就有结果了 但是呢?我考得非常的完蛋,只有30pts 据 ...
- Electron 开发音视频
废话不多说,咱直接进入正题! 创建 Electron 项目 前提条件 在使用Electron进行开发之前,需要安装 Node.js. 要检查 Node.js 是否正确安装,请在您的终端输入以下命令: ...
- 【LeetCode】209. 长度最小的子数组
209. 长度最小的子数组 知识点:数组:前缀和:二分法:双指针:滑动窗口 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小 ...
- ICCV2021 | 重新思考视觉transformers的空间维度
论文:Rethinking Spatial Dimensions of Vision Transformers 代码:https://github.com/naver-ai/pit 获取:在CV技 ...