Struts2  之 实现文件上传和下载

必须要引入的jar

commons-fileupload-1.3.1.jar

commons-io-2.2.jar

01.文件上传需要分别在struts.xml配置 和 创建文件上传必要的类、

Jsp页面的截图

Struts.xml中的配置

配置上传需要的savePath(文件上传路径)和 指定文件上传的类

<action name="upload" class="cn.wz.upload.action.UploadAction" >

<param name="savePath">/upload</param>

<result name="success">success.jsp</result>

</action>

UploadAction类中的配置

该类需要继承自ActionSupport ,重写它的execute方法。

还要设置几个必要的属性:

uploadFileName(文件名)、

savePath(文件保存路径地址)、

uploadContentType(上传文件的类型)、

File file(该属性的类型是File类型,封装了上传文件的属性)。

public String execute() throws Exception {

byte[] bytes=new byte[1024];

FileInputStream fis=new FileInputStream(getUpload());

FileOutputStream fos=new FileOutputStream(getSavePath()+"\\"+getUploadFileName());

int lenth=fis.read(bytes);

while (lenth>0) {

fos.write(bytes, 0, lenth);

lenth=fis.read(bytes);

}

fis.close();

fos.flush();

fos.close();

return SUCCESS;

}

省略get和set方法...

public String getSavePath() {

return ServletActionContext.getServletContext().getRealPath(savePath);

}

02.实现多文件上传、实现多文件上传的操作非常简单,在表单中添加多个相同的name属性的File控件,这样当表单提交时,将会提交一个数组。因此,只需要在上传Action中将原本处理单个文件的操作改成对集合的操作即可。

public String execute() throws Exception {

byte[] bytes=new byte[1024];

for (int i = 0; i < upload.length; i++) {

FileInputStream fis=new FileInputStream(getUpload()[i]);

FileOutputStream fos=new FileOutputStream(getSavePath()+"\\"+getUploadFileName()[i]);

int lenth=fis.read(bytes);

while (lenth>0) {

fos.write(bytes, 0, lenth);

lenth=fis.read(bytes);

}

fis.close();

fos.flush();

fos.close();

}

return SUCCESS;

}

03.文件下载、Struts2为了支持文件的下载,提供了Stream结果类型,该类型的作用就是专门用于实现文件下载功能。

Stream结果类型。

该类型在实现文件下载功能时需要指定一个输入流,即inputStream参数,通过这个流就可以输出下载的文件内容。我们可能还需要对相关的参数进行配置,如MIME类型、HTTP请求头信息、缓冲区的大小等。

Stream结果了类型的配置参数

contentType:发送到浏览器的MIME类型。

contentLength:设置文件的大小。

contentDisposition:设置响应的inputStream类型的属性名称。

inputName:指定Action中提供的inputStream类型的属性名称。

bufferSize:读取和下载时的缓冲区大小。

文件下载(当前示例是在jsp页面有一个指向固定的文件地址的链接,来实现文件下载的,日后有需要的时候可以更换为动态的)

该类同样是要继承自ActionSupport 

设置一些必要的属性:

InputPath (读取下载文件的目录)

fileName (下载文件的文件名)

InputStream inputstream (读取下载文件的输入流)

ContentType (下载文件的类型)

需要创建InputStream输入流

public InputStream getInputStream()throws FileNotFoundException {

String path=ServletActionContext.getServletContext().getRealPath(inputPath);

return new BufferedInputStream(new FileInputStream(path+"\\"+fileName));

}

省略get和set方法...

文件下载主要就是在struts.xml文件中的配置信息

<action name="down" class="cn.wz.upload.action.DownAction" >

<param name="inputPath">/upload</param>

<result name="success" type="stream">

<param name="contentType">application/msword</param>

<param name="inputName">inputStream</param>

<param name="contentDisposition">

attachment;filename="${fileName}"

</param>

<param name="bufferSize">4096</param>

</result>

</action>

在配置文件中,ContentType参数决定了下载问阿金的类型。不同的文件类型对应的参数值也是不同的。

ContentType对应的文件类型

文档类型>>>ContentType设置

Word>>>Application/msword

Excel>>>Application/vnd.ms-excel

PPT>>>Application/vnd.ms-powerpoint

图片>>>image/gif、image/bmp、image/jpeg

文本文件>>>text/plain

HTML网页>>>text/html

可执行文件>>>application/octet-stream

Struts2 之 实现文件上传和下载的更多相关文章

  1. Struts2学习总结——文件上传与下载

    Struts2文件上传与下载 1.1.1新建一个Maven项目(demo02) 在此添加Web构面以及 struts2 构面 1.2.1配置Maven依赖(pom.xml 文件) <?xml v ...

  2. 4.struts2中的文件上传,下载

    Struts2中文件的上传下载,是借用commons里面的包实现文件的上传,需要导入两个jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar 实现 ...

  3. struts2中的文件上传和下载

    天下大事,必做于细.天下难事,必作于易. 以前见过某些人,基础的知识还不扎实就去学习更难的事,这样必定在学习新的知识会非常迷惑结果 再回来又一次学习一下没有搞懂的知识,这必定会导致学习效率的下降!我写 ...

  4. Struts2 之 实现文件上传(多文件)和下载

    Struts2  之 实现文件上传和下载 必须要引入的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar 01.文件上传需要分别在struts.xm ...

  5. 十六、Struts2文件上传与下载

    文件上传与下载 1.文件上传前提:<form action="${pageContext.request.contextPath}/*" method="post& ...

  6. 【SSH2(实用文章)】--Struts2文件上传和下载的例子

    回想一下,再上一篇文章Struts2实现机制,该步骤做一步一步来解决,这种决心不仅要理清再次Struts2用法.映射机制及其在深入分析.最后一个例子来介绍Struts2一种用法,这里将做一个有关文件上 ...

  7. Struts2第六篇【文件上传和下载】

    前言 在讲解开山篇的时候就已经说了,Struts2框架封装了文件上传的功能--..本博文主要讲解怎么使用Struts框架来完成文件上传和下载 回顾以前的文件上传 首先,我们先来回顾一下以前,我们在we ...

  8. struts2实现文件上传和下载

    在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来 ...

  9. 笨鸟先飞之Java(一)--使用struts2框架实现文件上传

    无论是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个经常使用功能会有非常多种解决方案,可是struts2的框架却能给我们一个比較简单的方式,以下就一起来看吧: ...

随机推荐

  1. 防止WordPress利用xmlrpc.php进行暴力破解以及DDoS

    早在2012 年 12 月 17 日一些采用 PHP 的知名博客程序 WordPress被曝光存在严重的漏洞,该漏洞覆盖WordPress 全部已发布的版本(包括WordPress 3.8.1).该漏 ...

  2. (转)create table #temptable 临时表 和 declare @bianliang table ()表变量

    在开发过程中,经常会遇到使用表变量和本地临时表的情况.下面是对二者的一个介绍: 1. 为什么要使用表变量 表变量是从2000开始引入的,微软认为与本地临时表相比,表变量具有如下优点:  a.与其他变量 ...

  3. android 6.0权限判断 音频 拍照 相册

    ------------------------------------------打开音频权限------------------------------------------------ if ...

  4. php 方便快捷导出excel

    /** * 导出excel * @param array $column * eg: $column = [ * 'username' => '姓名', * 'age' => '年龄', ...

  5. ECSHOP后台SQL查询提示错误 this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT

    一).首先说一下错误现象:市面上流行的绝大部分ECSHOP模板,安装的时候都需要执行一段或几段SQL语句来修改数据结构或者初始化一些数据.大多数ECSHOP管理员为了省事,都会通过 “ECSHOP后台 ...

  6. WCF实例上下文模式与并发模式对性能的影响

    实例上下文模式 InstanceContextMode 控制在响应客户端调用时,如何分配服务实例.InstanceContextMode 可以设置为以下值: •Single – 为所有客户端调用分配一 ...

  7. PHP操作MongoDB学习(转)

    1  mongodb启动时,设置启动项 C:\>mongodb\bin\mongod --config C:\mongodb.conf 其中mongodb.conf为:    dbpath = ...

  8. Solr 5.x集成中文分词word,mmseg4j

    使用标准分词器,如图: 使用word分词器 下载word-1.3.jar,注意solr的版本和word分词的版本 将文件word-1.3.jar拷贝至文件夹C:\workspace\Tomcat7.0 ...

  9. 上海华魏光纤传感科技有限公司 招聘 《.NET研发工程师》

    代友招聘 <.NET研发工程师> **** 公司简介 **** 上海华魏光纤传感技术有限公司成立于2001年,注册资金1458.16万人民币,专业从事光纤传感技术的研究开发,为交通.市政等 ...

  10. 关于 Visual Studio 调试 Global 的一点总结

    在开发 MVC 的项目中遇到了些问题,想通过调戏查看找问题的原因,发现无法调试 Global 中的 Application_Start 方法,在网上找遍了也没有相应的解决办法,在经过了很多次尝试之后仍 ...