之前要下载文件是通过向response中写流,还要设置head,比较麻烦。
用struts可以配置result,自动化的下载
<action name="fileLoad" class="com.my.action.FileUpAction" method="load">
<result name="success" type="stream">
<!-- 下载文件类型,这里是全部类型都可以 -->
<param name="contentType">application/octet-stream</param>
<!-- 这个要在action中有个叫 inputStream 的输入流 是要下载文件的流-->
<param name="inputName">inputStream</param>
<!-- filePathName 是客户端下载框中出现的文件名 -->
<param name="contentDisposition">attachment;filename="${filePathName}"</param>
<!-- 缓冲流大小 -->
<param name="bufferSize">5120</param>
</result>
</action>
另外对于要下载不存在的文件,我会在action中抛出RuntimeException,在异常中带上'文件不存在'的信息,
打到业务异常页面。
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception" />
<exception-mapping result="bus_error" exception="java.lang.RuntimeException" />
</global-exception-mappings>
页面中用struts输出业务异常内容
<h2><s:property value="exception.message"/> </h2>