实现上传功能

Struts2实际上是使用的commons fileupload 组件,所以记得导包哦。

1.首先你应该有一个上传页面

<!-- file的name属性与action中的File类型属性保持一致,用于封装File控件对应的文件内容 -->
<s:file name="upload" label="选择文件"></s:file>

2.然后创建一个文件上传的XXXaction

public class UploadAction extends ActionSupport implements ModelDriven<File> {

    // 封装上传文件属性
private File upload;
// 封装上传文件的类型
private String uploadContentType;
// 封装生成文件名称
private String uploadFileName;
// 获取文件上传的路径
private String savePath; @Override
public String execute() throws Exception {
// 准备一个byte数组
byte[] buffer = new byte[1024];
// 读取文件
FileInputStream fis = new FileInputStream(getUpload());
// 保存文件,并设置保存目录路径
FileOutputStream fos = new FileOutputStream(getSavePath() + "\\"
+ this.getUploadFileName());
int length = fis.read(buffer);
// 循环写入
while (length > 0) {
// 每次写入length长度的内容
fos.write(buffer, 0, length);
length = fis.read(buffer);
}
fis.close();
fos.flush();
fos.close();
return SUCCESS;
}
  public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
  public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
} // 获取上传文件的保存路径
// 通过读取存放目录货的保存路径
public String getSavePath() {
return ServletActionContext.getServletContext().getRealPath(savePath);
}
}

3.然后配置Struts.xml

添加上传的action元素

<!-- 上传文件的action -->
<action name="uploadAction" class="cn.cnsdhzzl.action.UploadAction">
<!-- 通过param参数设置保存目录的路径 -->
<param name="savePath">/upload</param>
<result name="success">uploadSuccess.jsp</result>
</action>

实现下载功能

1.首先你需要有一个下载链接

<-- 指向下载的action逻辑视图名 -->
<a href="downloadAction?fileName=123.jpg">点击下载</a>

2.创建一个下载XXXaction

public class DownloadAction extends ActionSupport {
// 读取下载文件的目录
private String inputPath;
// 下载文件的文件名
private String fileName;
// 下载文件的输入流
private InputStream inputStream;
// 下载文件的类型
private String conetntType; @Override
public String execute() throws Exception {
return SUCCESS;
}
public InputStream getInputStream() throws FileNotFoundException {
String path = ServletActionContext.getServletContext().getRealPath(
inputPath);
return new BufferedInputStream(new FileInputStream(path + "\\"
+ fileName));
}
//省略部分getset
}

3.然后配置Struts.xml

添加下载的action元素

<!-- 下载文件的action -->
<action name="downloadAction" class="cn.cnsdhzzl.action.DownloadAction">
<param name="inputPath">/upload</param>
<result name="success" type="stream">
<!-- 设置文件类型 -->
<param name="contentType">application/image/jpeg</param>
<param name="inputName">inputStream</param>
<!-- 分为两部分,即设置下载处理方式和设置下载文件显示的文件名 -->
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
<result name="error">error.jsp</result>
</action>

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

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

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

  2. Struts2的文件上传与下载

    <一>简述: Struts2的文件上传其实也是通过拦截器来实现的,只是该拦截器定义为默认拦截器了,所以不用自己去手工配置,<interceptor name="fileUp ...

  3. 【Struts2】文件上传与下载

    一.上传 1.1 Struts2实现步骤 浏览器端 服务器端 1.2 关于Struts2中文件上传细节: 1.3 示例 jsp文件 Action类 struts.xml文件配置 二.下载 2.1 文件 ...

  4. (十五)struts2的文件上传和下载

    文件上传的原理 我们以前学习上传的时候知道需要将表单的enctype属性设置为multipart/form-data. 表单的enctype属性指定的是表单数据的编码方式,有三个值: -applica ...

  5. Struts2之文件上传与下载

    时间:2017-1-11 15:47 --使用commons-fileupload组件上传1.客户端    *   method="post"    *   <input t ...

  6. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  7. Struts2入门(七)——Struts2的文件上传和下载

    一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST" ...

  8. 7、Struts2实现文件上传和下载

    一.实现单个文件上传 1.创建如下web项目结构 2.在src下的com.action包下创建UploadAction.java package com.action; import java.io. ...

  9. struts2(六) 文件上传和下载

    前面对文件下载提过一点点,这里正好要讲文件上传,就放在一起在说一遍. --WH 一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相 ...

随机推荐

  1. codevs 1294 全排列 next_permuntation

    #include<bits/stdc++.h> using namespace std; #define ll long long #define pi (4*atan(1.0)) #de ...

  2. 用wordpress制作网站的总结

    在没有自己的网站的时候很像拥有一个属于自己的网站,可以说是自己的一个愿望吧.但是当我真正的运行起来了之后觉得没有多么的兴奋,自己也折腾了几天wordpress,从买域名空间,到安装WP,遇到了一些问题 ...

  3. ctDNA 相关网站-liquid-biopsy

    http://www.gene-quantification.de/liquid-biopsy.html Liquid Biopsy -- Definitions Liquid Biopsy -- r ...

  4. git学习笔记06-创建分支合并分支-比svn快多了,因为只有指针在改变

    一开始git只有一条时间线,这个分支叫主分支,即master分支. HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支. 每次提交,mas ...

  5. java位运算符常见用法

    1. 判断int型变量a是奇数还是偶数 a&1 = 0 偶数 a&1 = 1 奇数 2. 求平均值,比如有两个int类型变量x.y,首先要求x+y的和,再除以2,但是有可能x+y的结果 ...

  6. android上让我放弃使用wstring来操作中英文字符串 转

    android上让我放弃使用wstring来操作中英文字符串 2013-08-07 16:37:24|  分类: cocos2d|举报|字号 订阅     项目需要,需要对中英文字符串进行遍历修改等, ...

  7. hibernate(三)检索属性配置

    检索即对象的获取:获取的时机和和方式:减少没必要的内存占用,尽量少的sql语句减少多余数据库的访问 一:类级别的检索:load() 和属性<class lazy=true> .无论 < ...

  8. [转载] 分析Linux内核创建一个新进程的过程

    http://blog.luoyuanhang.com/2015/07/27/%E5%88%86%E6%9E%90Linux%E5%86%85%E6%A0%B8%E5%88%9B%E5%BB%BA%E ...

  9. 多列布局 css3 column属性

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  10. 转!!EL表达式大全

    EL表达式      1.EL简介 1)语法结构        ${expression} 2)[]与.运算符      EL 提供.和[]两种运算符来存取数据.      当要存取的属性名称中包含一 ...