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,即可下载文件了。

最新文章

  1. SPRING SECURITY 拦截静态资源
  2. NeHe OpenGL教程 第四十六课:全屏反走样
  3. ci中如何得到配置的url
  4. hdu 2037
  5. 菜鸟学习笔记2,$(document).ready()使用讨论
  6. Android之线程终止
  7. as3用鼠标拖动图形拼图——灰常简单的教程
  8. .NET中文乱码解决方案
  9. 【1】ubuntu 安装docker
  10. Python打印乘法口诀表
  11. CARVARS 圆形进度条
  12. HashMap 底层分析
  13. TCP/IP、Http大纲
  14. 依赖倒置原则(Dependence Inversion Principle,DIP)
  15. 【asp.net core】Publish to a Linux-Ubuntu 14.04 Server Production Environment
  16. GANS 资料
  17. [LeetCode] 877. Stone Game == [LintCode] 396. Coins in a Line 3_hard tag: 区间Dynamic Programming, 博弈
  18. 我的react学习
  19. 轻量级自动化运维工具Fabric的安装与实践
  20. 常用FTP命令 1. 连接ftp服务器

热门文章

  1. 聊聊、Spring ServletContainerInitializer
  2. django通用视图之TemplateView和ListView简单介绍
  3. A Neural Algorithm of Artistic Style
  4. ComboBox列表自定义类保存数据
  5. 01、dos命令行的常用命令
  6. Visual Studio2015 、2017中如何支持MYSQL数据源
  7. SVN基本介绍
  8. NativeScript Vue 和 Weex 对比与分析
  9. 通过VS2010性能分析来查找代码中那些地方最损耗资源
  10. sublime text 3将px换算为rem的插件的安装及使用