1:struts2配置文件如下:
备注1
contentType:指定被下载文件的文件类型。 application/octet-stream 默认值,可以下载所有类型
inputName:指定被下载文件的入口输入流, 和DownloadAction中的getInputStream()对应,主要是获得实际资源文件
contentDisposition:指定下载的文件名,一般和文件名一致,但是要注意中文件名保存时乱码问题,解决办法就是进行编码处理
如:<param name="contentDisposition">attachment;filename="${file}"</param> 要求DownloadAction中的getFile()返回的文件名编码方式为
ISO8859-1,所以要进行下面处理:
public String getFile() {
String fileName= "";
try {
fileName = new String(file.getBytes(),"ISO8859-1"); //把file转换成ISO8859-1编码格式
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return fileName;
}
bufferSize:指定下载文件时的缓冲大小。
备注2
<result name="success" type="stream"> 要注意的是result的type类型要为:stream
备注3
上面的拦截器主要是用来设置下载权限的,如果用户没有登陆则不能下载,在配置拦截器时间要注意顺序问题
2:DownloadAction代码如下:
3:jsp页面如下:
注意
这里唯一要说明的一点是链接包含有中文的时候处理办法,因为链接的实际上是按get方式传送的,所以可以在Tomcat中做处理
在server.xml中加入URIEncoding="编码格式"
如:<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
但还有一点要注意,那就是URIEncoding的编码格式要和页面的编码格式相同