最近做了个用struts2下载excel文件的例子,下载功能是实现了,但有个问题一直没得到解决,如下:程序发到服务器上,用我的电脑访问(IE),正常下载excel文件;用一同事的电脑访问,首次访问时提示"无法找到站点,请稍后再试..."提示框,关掉提示框,再次访问时就能正常下载.而且在该君机器上每次关闭全部打开的IE后再打开IE访问下载站点,都会出现这种情况.下载文件的思路如下:
由后台构建InputStream 输入流,然后配置struts.xml是将InputStream 作为stream类型返回,浏览器得到返回的是数据流时,提示是否保存为文件,还是直接打开该文件(如果能解析这种格式的文件).struts.xml配置如下:
- <action name="download" class="example.ExcelFileDownloadAction" method="downLoadExcel">
- <result name="success" type="stream">
- <param name="contentType">application/vnd.ms-excel</param>
- <param name="inputName">inputStream</param>
- <param name="contentDisposition">attachment;filename="test.xls"</param>
- <param name="bufferSize">4096</param>
- </result>
- </action>
第4行中配置的inputStream,是在example.ExcelFileDownloadAction中定义的
private InpurtStream inputStream;
作为返回的流对象.这样配置后下载的事就交给strust2处理了,其中在downLoadExcel方法中只要正确的给inputStream赋值,并返回"SUCCESS",和转向JSP页面的返回值一样.
原理很简单,但就是在有的机子上首次访问下载路径时报"无法找到站点,请稍后再试...",让人很不爽...
后来改用Servlet作为返回输出流的工具,原理类同,但再也没出现过类型问题,这是struts2中的问题,还是可以改代码避免这种问题?(用的是struts2 2.0.12版本)
问题有两个:
1.为什么有的机子上会出现"无法找到站点,请稍后再试...".而有的机子上却没有类似问题?
2.为什么出现"无法找到站点,请稍后再试..."后,关闭提示框,再次访问下载URL却不会再提示了,能正常下载?