freemarker得到数据流--个人记录下

	/**
     * 将解析之后的文件内容返回字符串
     * @param name 模板文件名
     * @param root 数据Map
     * @return
     */
    public static String printString(String name,Map<String,Object> root) {
        StringWriter out = new StringWriter();
        try {
            //通过一个文件输出流,就可以写到相应的文件中
            Template temp = getTemplate(name);
            temp.process(root, out);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        } finally {
            try {
                if(out!=null) out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return out.toString();
    }

我将上面方法返回的String和文件名存入map中了

response.reset();
				response.setContentType("application/x-download; charset=UTF-8");
				response.addHeader("Content-Disposition", "attachment; filename="+
						//使用URLEncoder.encode方法可以解决文件名乱码的问题
						URLEncoder.encode(map.get("FILE_NAME").toString(), "UTF-8"));
				byte[] b = new byte[1024];
				InputStream is = IOUtils.toInputStream((String)map.get("FILE"),"UTF-8");
				int data;
				while ((data = is.read(b)) != -1) {
						response.getOutputStream().write(b, 0, data);
				}

版权声明:本文为banweili008原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。