如果在后台直接输出文件,文件类型是txt、xml类型时,jsp页面链接时会直接打开,而不会提示“保存”,所以,进行了如下操作,可解决此问题。
将后台的一个文件流直接在jsp页面上输出
<%@ page language="java" import="java.io.*" pageEncoding="GBK"%>
<%
response.setCharacterEncoding("gb2312");
request.setCharacterEncoding("gb2312");
String file="";
String doc = (String)request.getAttribute("exportFileName");//为后台的文件流
response.setContentType("text/xml");//此项内容随文件类型而异 默认是html类型
response.setHeader("content-disposition", "attachment;filename=" +file); //如果不加这句 则直接打开xml文件
out.println(doc);//输出到文件
%>
(1)Content-Type的作用
该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。
例如:当Content-Type 的值设置为text/html和text/plain时,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析.
(2)Content-Disposition 的作用
当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。
Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,文件以filename的值命名,保存类型以Content中设置的为准。
注意:在设置Content-Disposition头字段之前,一定要设置Content-Type头字段。
将后台的一个文件流直接在jsp页面上输出
<%@ page language="java" import="java.io.*" pageEncoding="GBK"%>
<%
response.setCharacterEncoding("gb2312");
request.setCharacterEncoding("gb2312");
String file="";
String doc = (String)request.getAttribute("exportFileName");//为后台的文件流
response.setContentType("text/xml");//此项内容随文件类型而异 默认是html类型
response.setHeader("content-disposition", "attachment;filename=" +file); //如果不加这句 则直接打开xml文件
out.println(doc);//输出到文件
%>
(1)Content-Type的作用
该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。
例如:当Content-Type 的值设置为text/html和text/plain时,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析.
(2)Content-Disposition 的作用
当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。
Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,文件以filename的值命名,保存类型以Content中设置的为准。
注意:在设置Content-Disposition头字段之前,一定要设置Content-Type头字段。