日期:2014-05-17  浏览次数:20766 次

神乎!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导出的···

刚学习了,看来还是inputStream好喔!

jxl的原理就是IO吧,在操作excel上肯定是jxl比较好用的,要不然jxl就没有存在的必要了。
------解决方案--------------------