Struts2文件下载

文件下载非常简单,直接在页面上给出一个超链接,链到指定的Servlet就可以了。用Struts2框架实现也是非常简单,下面就来实现一下:

Action类:

public class FileDownloadAction extends ActionSupport{
	//封装被下载资源位置信息
	private String inputPath;

	public String getInputPath() {
		return inputPath;
	}

	public void setInputPath(String inputPath) {
		this.inputPath = inputPath;
	}
	/**
	 * 定义一个返回InputStream的方法,该方法作为被下载文件的入口,
	 * 且需要配置stream类型结果时指定inputName参数,
	 * inputName参数的值就是方法去掉get前缀、首字母小写的字符串
	 * @return
	 * @throws Exception
	 */
	public InputStream getTargetFile() throws Exception{
		//返回指定文件对应的输入流
		return ServletActionContext.getServletContext().getResourceAsStream(inputPath);
	}
}

配置Action:

配置文件下载Action与配置普通Action没有太大的不同,关键是需要配置一个类型为stream的结果,该stream类型结果将使用文件下载作为响应。

struts.xml

<action name="download" class="cn.edu.neuq.action.FileDownloadAction">
		<!-- 指定被下载资源的位置 -->
		<param name="inputPath">/WEB-INF/images/haha.jpg</param>
		<!-- 配置结果类型为stream的结果 -->
		<result type="stream">
			<!-- 指定下载文件的文件类型 -->
			<param name="contentType">image/jpg</param>
			<!-- 指定由getTargetFile()方法返回被下载文件的InputStream -->
			<param name="inputName">targetFile</param>
			<param name="contentDisposition">filename="heihei.jpg"</param>
			<!-- 指定下载文件的缓冲大小 -->
			<param name="bufferSize">4096</param>
		</result>
</action>

完成!
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值