struts2实现简单文件下载功能

摘要:
Struts2提供了stream结果类型,该结果类型是专门用于支持文件下载功能的。配置stream类型的结果需要指定以下4个属性。  contentType:指定被下载文件的文件类型  inputName:指定被下载文件的入口输入流  contentDisposition:指定下载的文件名  bufferSize:指定下载文件时的缓冲大小 struts2文件下载示例:1.处理文件下载的Action:?123456789101112131415161718192021222324/**&

Struts2提供了stream结果类型,该结果类型是专门用于支持文件下载功能的。配置stream类型的结果需要指定以下4个属性。

  contentType:指定被下载文件的文件类型

  inputName:指定被下载文件的入口输入流

  contentDisposition:指定下载的文件名

  bufferSize:指定下载文件时的缓冲大小 

struts2文件下载示例:

1.处理文件下载的Action:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
 * 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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,即可下载文件了。\

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。


免责声明:文章转载自《struts2实现简单文件下载功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MyEclipse 2015反编译插件安装蘑菇街2017年校园招聘笔试题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

php中fopen函数用法详解(打开文件)

介绍下php中的fopen函数。1.resource  fopen(string  $filename, string $mode [,bool $use_include_path [, resource $zcontext]]) 函数功能:fopen() 将 filename 指定的名字资源绑定到一个流上。如果filename 是 "scheme://....

美多商城项目之商品模块

1. FastDFS和Docker      1.0 为什么要使用FastDFS和Docker?         因为商品数据分为了商品图片数据(文件),还有商品信息数据(字符串:商品名称,价格,...)        商品图片数据(文件)需要使用单独的文件存储服务器进行管理            文件存储服务器:FastDFS            如何...

试试SQLServer 2014的内存优化表

试试SQLServer 2014的内存优化表 SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度。 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技术来支持大规模OLTP工作负载。 就算如此,要利用此新功能,数据库必须包含“内存优化...

VINS-Mono运行

修改 修改地图保存的路径因为我们现在跑的是euroc数据集,所以我们要修改的地方有两处。 euroc_config.yaml中的pose_graph_save_path项pose_graph_save_path: "/home/kk/自己的路径/" euroc_config.yaml中的output_path项output_path: "/home/kk/...

Linux下为Calibre书库打中文目录名与文件名补丁

本文由来 临近下班突然看到知乎上有篇文章是给Calibre打中文目录与文件名补丁的,想起我之前为啥放弃Calibre的——存进书库里书的名称都变成了拼音!手动找起来或者搜索工具找起来太麻烦了(有时想不起用Calibre,直接用搜索软件+PDF阅读器就看了),用过Calibre的同学应该知道——添加到书库里的书相当于从外边复制过来的,每本书都存两份很占空间呀...

目录的文件查看和修改

在Linux系统中文件的权限可以在文件上单击右键—>属性来查看。   但是我们这次用的是全命令来查看和修改文件的权限   为了举一个实例,我们在mnt文件夹中建立一个fileA文件,然后在fileA文件夹中建立一个zhaoyuqiang.html网页。   建好之,我们就以fileA文件和zhaoyuqiang.html文件来说事,呵呵 查看文件的...