求解答,为何我的文件下载弹出的保存对话框里的名称竟然是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();}

解决方案 »

  1.   

    targetFile在哪里配置的?改为inputStream看下
      

  2.   

    http://pengranxiang.iteye.com/blog/259401
      

  3.   

    为什么action代码段中没有写出的动作呢,不需要的?
      

  4.   

    response.setContentType("text/plain;charset=ISO8859-1");   //设置 response 的编码方式
    response.setContentLength((int)file.length());   //写明要下载的文件的大小
            response.setHeader("Content-disposition","attachment;filename="+fileName);  //设定输出文件头 加上这几句试试
      

  5.   

    楼上的试过了,不行阿!!!我这个是动态生成excel,并下载
      

  6.   

    如果是jsp页面的话OutputStream output=response.getOutputStream();这样直接获取输出流是不行的,建议还是获取OutputStream下面的流,除非吧返回值设置为null,要么和原有的jsp页面中的流冲突。
    或者楼主那样不刷新,直接关闭,那么jsp页面中的原有的OutputStream流也就关闭了。这样还是不推荐的。
    另外楼主可以创建一个excel对象,里面包含内容和标题,标题可以一开始就设进去,内容可以以后生成添加。
    我现在就是这么做的。
    明天发一下我的,现在在家,没带。
      

  7.   

    参数我调了很多次,可都不行!其实有点不大明白的,inputStream和outputStream输出文件有什么区别?如果用inpoutStream的话,遇到中文都会变成  ____  下划线,编码之后也会!!真郁闷!!!
      

  8.   

    你是用poi导出excel把,可以看看我写的这个简单例子,http://download.csdn.net/download/xiaoliouc/5117319
      

  9.   

    我用的是jxl导出的···刚学习了,看来还是inputStream好喔!
      

  10.   

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