求解答,为何我的文件下载弹出的保存对话框里的名称竟然是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();}
无论是固定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();}
response.setContentLength((int)file.length()); //写明要下载的文件的大小
response.setHeader("Content-disposition","attachment;filename="+fileName); //设定输出文件头 加上这几句试试
或者楼主那样不刷新,直接关闭,那么jsp页面中的原有的OutputStream流也就关闭了。这样还是不推荐的。
另外楼主可以创建一个excel对象,里面包含内容和标题,标题可以一开始就设进去,内容可以以后生成添加。
我现在就是这么做的。
明天发一下我的,现在在家,没带。