Struts实现下载文件

Struts 2的文件下载Action和普通的action差不多,仅仅是该action需要提供一个返回inputstream流的方法,该输入流代表了被下载文件的入口。如下:

public class FileDownloadAction extends ActionSupport 
{
	//该属性是依赖注入的属性,可以在配置文件中动态指定该属性值
	private String inputPath;
	//依赖注入该属性值的setter方法
	public void setInputPath(String value)
	{
		inputPath = value;
	}
	/*
	定义一个返回InputStream的方法,
	该方法将作为被下载文件的入口,
	且需要配置stream类型结果时指定inputName参数,
	inputName参数的值就是方法去掉get前缀、首字母小写的字符串
	*/
	public InputStream getTargetFile() throws Exception 
	{
		//ServletContext提供getResourceAsStream()方法
		//返回指定文件对应的输入流 
		return ServletActionContext.getServletContext()
			.getResourceAsStream(inputPath);
	}
}


配置action时需要注意,关键要配置一个类型为stream的结果,该stream类型的结果将使用文件下载作为响应。

<action name="download" class="lee.FileDownloadAction">
			<!-- 指定被下载资源的位置 -->
			<param name="inputPath">\images\疯狂Java联盟.gif</param>
			<!-- 配置结果类型为stream的结果 -->
			<result name="success" type="stream">
				<!-- 指定下载文件的文件类型 -->
				<param name="contentType">image/gif</param>
				<!-- 指定由getTargetFile()方法返回被下载文件的InputStream -->
				<param name="inputName">targetFile</param>
				<param name="contentDisposition">filename="crazyit.gif"</param>
				<!-- 指定下载文件的缓冲大小 -->
				<param name="bufferSize">4096</param>
			</result>
</action>

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yu422560654/article/details/6889070
个人分类: Struts 2
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭