神乎!struts2文件下载,名称竟然是action名!
求解答,为何我的文件下载弹出的保存对话框里的名称竟然是action名?
求打救
无论是固定filename="student.xls",还是filename="${fileName}",显示的都是action名!
struts配置如下:
<action name="exportExcelStu" class="ab.action.user.UserList" method="toexcelStu">
<result type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="inputName">targetFile</param>
<param name="contentDisposition">attachment;filename="student.xls"</param>
<param name="bufferSize">4096</param>
</result>
</action>
action代码如下:
HttpServletResponse response = ServletActionContext.getResponse();
OutputStream output=response.getOutputStream();
fileName= new String("学生信息.xls".getBytes(), "UTF-8");
this.setFileName(java.net.URLEncoder.encode(fileName, "UTF-8"));
try{
WritableWorkbook wk=Workbook.createWorkbook(output);
setWh("1");
userService.getInformation(wk,wh,null);
output.close();
}catch(Exception e){
e.printStackTrace();}
------解决方案--------------------没有配置路径参数引起的
------解决方案--------------------参数配置有问题
------解决方案--------------------targetFile在哪里配置的?改为inputStream看下
------解决方案--------------------http://pengranxiang.iteye.com/blog/259401
------解决方案--------------------为什么action代码段中没有写出的动作呢,不需要的?
------解决方案--------------------response.setContentType("text/plain;charset=ISO8859-1"); //设置 response 的编码方式
response.setContentLength((int)file.length()); //写明要下载的文件的大小
response.setHeader("Content-disposition","attachment;filename="+fileName); //设定输出文件头
加上这几句试试
------解决方案--------------------参数问题,配置一下
------解决方案--------------------如果是jsp页面的话OutputStream output=response.getOutputStream();这样直接获取输出流是不行的,建议还是获取OutputStream下面的流,除非吧返回值设置为null,要么和原有的jsp页面中的流冲突。
或者楼主那样不刷新,直接关闭,那么jsp页面中的原有的OutputStream流也就关闭了。这样还是不推荐的。
另外楼主可以创建一个excel对象,里面包含内容和标题,标题可以一开始就设进去,内容可以以后生成添加。
我现在就是这么做的。
明天发一下我的,现在在家,没带。
------解决方案--------------------你是用poi导出excel把,可以看看我写的这个简单例子,http://download.csdn.net/download/xiaoliouc/5117319
------解决方案--------------------
jxl的原理就是IO吧,在操作excel上肯定是jxl比较好用的,要不然jxl就没有存在的必要了。
------解决方案--------------------