<%@ page contentType="text/html; charset=GBK" %>
<%@page import="java.util.*"%>
<%@page import="com.ncr.newsvc.GetTables"%>
<%@page import="java.io.*"%>
<%
request.setCharacterEncoding("gb2312");//上一页面传过来的是报表的中文名字,需要重新编码,否则是乱码
String filename = request.getParameter("filename");
//System.out.println(filename);
//String filename="wwww.txt";
String filepath = "D://downloadfiles//";//文件在服务器的存放路径
response.setContentType("APPLICATION/OCTET-STREAM;charset=GBK");
response.setHeader("Content-Disposition",
"attachment; filename=/"" + filename + "/"");
/*
在响应头部要进行这样的设置,并且在web.xml中加入以下两个就可以下载excel和
txt文件了而不是直接用系统默认程序打开
<mime-mapping>
<extension>xls</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
*/
String encoding = "gb2312";
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath + filename);//读取文件为字节流
/*
后来发现读取文件的中文内容读出后乱码,增加下面这行将字节流转为字符流并
同时可以指定字符集,问题才解决.在FileInputStream的读取方法里面好像没有找到
可以指定字符集的初始化方法。
*/
InputStreamReader reader = new InputStreamReader(fileInputStream,encoding);
int i;
while ((i=reader.read()) != -1) {
out.write(i);
}
reader.close();
fileInputStream.close();
out.close();
%>