Struts2笔记--文件下载
2024-08-28 03:55:12
Struts2提供了stream结果类型,该结果类型是专门用于支持文件下载功能的。配置stream类型的结果需要指定以下4个属性。
contentType:指定被下载文件的文件类型
inputName:指定被下载文件的入口输入流
contentDisposition:指定下载的文件名
bufferSize:指定下载文件时的缓冲大小
struts2文件下载示例:
1.处理文件下载的Action:
/**
* Description:Struts2控制文件下载
* Author: Eleven
* Date: 2018/1/24 10:39
*/
public class FileAction extends ActionSupport{ //该成员变量对应着struts.xml中inputName的值,并为其提供get方法
private InputStream targetFile; //文件下载
public String download(){
//指定被下载资源的位置,并返回对应的输入流
String path = "/WEB-INF/images/lib.zip";
//利用getResourceAsStream()将指定文件转为对应的输入流
targetFile = ServletActionContext.getServletContext().getResourceAsStream(path);
return SUCCESS;
} //提供get方法
public InputStream getTargetFile() {
return targetFile;
}
}
文件下载,首先得要有被下载的文件资源,这里我将被下载文件放在了项目的WEB-INF/images的路径下面,可根据自己的需求来,然后直接用ServletContext提供的getResourceAsStream()方法返回指定文件对应的输入流。
2.配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="file_*" class="eleven.action.FileAction" method="{1}">
<!--文件下载-->
<!--配置结果类型为stream的结果-->
<result type="stream">
<!--指定下载文件的文件类型-->
<param name="contentType">application/zip</param><!--image/jpg-->
<!--指定action中返回被下载文件的InputStream的名称-->
<param name="inputName">targetFile</param>
<param name="contentDisposition">filename="aaa.zip"</param>
<!--指定下载文件的缓冲大小-->
<param name="bufferSize">4096</param>
</result>
</action> </package> </struts>
在浏览器地址栏中输入对应的文件下载的访问路径,如http://localhost:8080/demo/file_download,即可下载文件了。
最新文章
- SPRING SECURITY 拦截静态资源
- NeHe OpenGL教程 第四十六课:全屏反走样
- ci中如何得到配置的url
- hdu 2037
- 菜鸟学习笔记2,$(document).ready()使用讨论
- Android之线程终止
- as3用鼠标拖动图形拼图——灰常简单的教程
- .NET中文乱码解决方案
- 【1】ubuntu 安装docker
- Python打印乘法口诀表
- CARVARS 圆形进度条
- HashMap 底层分析
- TCP/IP、Http大纲
- 依赖倒置原则(Dependence Inversion Principle,DIP)
- 【asp.net core】Publish to a Linux-Ubuntu 14.04 Server Production Environment
- GANS 资料
- [LeetCode] 877. Stone Game == [LintCode] 396. Coins in a Line 3_hard tag: 区间Dynamic Programming, 博弈
- 我的react学习
- 轻量级自动化运维工具Fabric的安装与实践
- 常用FTP命令 1. 连接ftp服务器