站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题如何从一个action里直接输出一个服务器端的文件?

如何从一个action里直接输出一个服务器端的文件?

摘要: 如何从一个action里直接输出一个服务器端的文件?


如何从一个用struts的action里直接输出一个服务器端的文件?
比如一个如何输出/export/test.xls到客户端下载?
最好不经过jsp.


大概是这样,首先取得带路径的文件名然后
try{
response.setContentType("APPLICATION/OCTET-STREAM");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition","attachment; filename=/""+ filename + "/"");
java.io.InputStreamReader in = new java.io.InputStreamReader(new java.io.FileInputStream(file),"utf-8");
javax.servlet.ServletOutputStream sout = response.getOutputStream();
char[] buf = new char[8192];
while ( in.read(buf) != -1) {
sout.write((new String(buf)).getBytes("gb2312"));

}
in.close();
sout.close();
}catch(Exception e){
logger.debug(e.toString() );
e.printStackTrace() ;
}
程序里的编码要改成你的文件的编码


file是带路径的文件名
filename就是纯粹的文件名
String filename = file ;
String separator = System.getProperty("file.separator") ;
filename = filename.substring(filename.lastIndexOf(separator)+1);


To vacuumboy(菜鸟依旧):

我是已经在action里生成了文件,现在要把这个文件输出到客户端,不必再读取这个文件了。


那就把内容用sout.write输出到客户端,但是文件名还是要的


文件名有问题,不是乱码就是象"CA63SP0L."这样的没有文件名的东西。


文件名有问题是什么意思
是输出的文件内容有问题吗


输出的文件内容没有问题。
但输出的文件名有问题。
一个是2006_柒哀璃厢o.xls
另一个是CA0985WB

代码如下

String sheetName = departmentName + "/u65b0/u4ea7/u54c1/u4ea7/u91cf/u4fe1/u606f";



// export to client
// response.reset();//清空输出流

response.setContentType("application/x-download");
// response.setContentType("APPLICATION/OCTET-STREAM");
response.setContentType("application/msexcel");//定义输出类型
// response.setContentType("application/vnd.ms-excel; charset=UTF-8");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment; filename=/"" + fileName + "/"");//设定输出文件头

OutputStream os = response.getOutputStream();//取得输出流
wb.write(os);

os.flush();
os.close();


应是
String fileName = exportYear.toString() + "_" + departmentName + "/u65b0/u4ea7/u54c1/u4ea7/u91cf/u4fe1/u606f" + ".xls";



我在控制台看文件名是没有问题的。保存到本地也没有问题。
如2006_空调新产品信息.xls
但输出就不行了。


你先试一下英文文件,如果可以的话就说明是编码问题了,转码就行了


呵呵


艾,乱码还是没能解决。


↑返回目录
前一篇: 问一下关于自定义标签的问题
后一篇: 各位高手给初学者提个建议啊...