struts2文件下载

struts配置文件


<!-- 文件stream方式下载 -->
		<action name="DownloadAction" class="action.DownLoadAction" method="execute">
			<!-- 以stream二进制流的方式打开 -->
			<result name="success" type="stream">
				<!-- 指明文件的下载类型 -->
				<!-- 动态文件下载的,事先并不知道未来的文件类型,那么我们可以把它的值设置成为:application/octet-stream;charset=ISO8859-1 ,注意一定要加入charset,否则某些时候会导致下载的文件出错; -->
				<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
				<!-- 指明如果取得需要下载文件的InputStream输入流 -->
				<param name="inputName">imageStream</param>
				<!-- 指明让浏览器以下载框的方式打开 -->
				<!-- <param name="contentDisposition">attachment;filename="building.jpg"</param> -->
				<param name="contentDisposition">attachment;filename=${fileName}</param>
				<!-- 指明下载文件时的字符数组byte[]大小 -->
				<param name="bufferSize">1024</param>
			</result>
		</action>

action类

public void setFileName(String fileName) throws Exception {
        if(ServletActionContext.getRequest().getMethod().equals("GET")){
            byte[] bytes = fileName.getBytes("ISO8859-1");
            fileName=new String(bytes,"utf-8");
        }
        this.fileName = fileName;
    }
	
    public String getFileName() throws Exception {
        return URLEncoder.encode(fileName, "utf-8");
    }
    
    public InputStream getImageStream() throws Exception {
		String path = System.getProperty("user.dir") + File.separator + "src"+File.separator+"main"
				+File.separator+"webapp"+File.separator+"images"+File.separator+fileName;
		File file = new File(path);
		InputStream inputStream = new FileInputStream(file);
        return inputStream;
    }

触发链接时传递filename

<a href="/download/DownloadAction.action?fileName=${fileName }">文件下载</a>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值