首先我们写一个单文件长传的fileupload.jsp:

 <body>
<s:fielderror></s:fielderror> <!-- 报错信息 -->
<s:form action="upload" method="post" enctype="multipart/form-data">//以二进制格式格式
文件:<s:file label="文件上传" name="java1234"></s:file> //文件
<s:submit value="提交"></s:submit>
</s:form>
</body>

写一个单文件上传FileuploadAction:

 public class FileuploadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private File java1234;//文件
private String java1234FileName;//文件名称
private String java1234ContentType;//文件类型
public File getJava1234() {
return java1234;
}
public void setJava1234(File java1234) {
this.java1234 = java1234;
}
public String getJava1234FileName() {
return java1234FileName;
}
public void setJava1234FileName(String java1234FileName) {
this.java1234FileName = java1234FileName;
}
public String getJava1234ContentType() {
return java1234ContentType;
}
public void setJava1234ContentType(String java1234ContentType) {
this.java1234ContentType = java1234ContentType;
}
@Override
public String execute() throws Exception {
System.out.println("文件名称:"+java1234FileName);
System.out.println("文件类型"+java1234ContentType);
File destFile=new File("D:/"+java1234FileName);
FileUtils.copyFile(java1234, destFile);
return SUCCESS;
}
}

配置struts.xml:

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.multipart.maxSize" value="520000000"></constant>//文件的最大为520M
<package name="manager" extends="struts-default">
<action name="upload" class="com.java1234.action.FileuploadAction">
<result name="input">/fileupload.jsp</result>
<result name="success">/success.jsp</result>
<!-- <interceptor-ref name="fileUpload">可以设置拦截器对长传的文件进行拦截处理。
<param name="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg,audio/mp3</param>
<param name="maximumSize">15728640</param>15MB
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref> -->
</action>
</package>
</struts>

效果:

多文件上传:

filesupload.Jsp

 <body>
<s:fielderror></s:fielderror> <!-- 报错信息 -->
<s:form action="uploads" method="post" enctype="multipart/form-data">
<s:file label="文件上传1" name="java1234"></s:file>
<s:file label="文件上传2" name="java1234"></s:file>
<s:file label="文件上传3" name="java1234"></s:file>
<s:submit value="提交"></s:submit>
</s:form>
</body>

FilesUploadAction代码:

 public class FilesuploadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private File[] java1234;//文件
private String[] java1234FileName;//文件名称
private String[] java1234ContentType;//文件类型
public File[] getJava1234() {
return java1234;
}
public void setJava1234(File[] java1234) {
this.java1234 = java1234;
} public String[] getJava1234FileName() {
return java1234FileName;
} public void setJava1234FileName(String[] java1234FileName) {
this.java1234FileName = java1234FileName;
}
public String[] getJava1234ContentType() {
return java1234ContentType;
}
public void setJava1234ContentType(String[] java1234ContentType) {
this.java1234ContentType = java1234ContentType;
}
@Override
public String execute() throws Exception {
for(int i=0;i<java1234.length;i++){
System.out.println("文件名称:"+java1234FileName[i]);
System.out.println("文件类型"+java1234ContentType[i]);
File destFile=new File("D:/"+java1234FileName[i]);
FileUtils.copyFile(java1234[i], destFile);
}
return SUCCESS;
}
}

使用数组进行处理。

下载文件jsp:

 <body>
<a href="download">文件下载</a>
</body>

FiledownloadAction代码:

 public class FiledownloadAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String fileName;
public String getFileName() throws Exception{
fileName=new String(fileName.getBytes(),"IOS8859-1");
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream()throws Exception{
File newfile=new File("D:/文件名.jpg");
this.fileName="文件名";
return new FileInputStream(newfile);
}
}

Struts.xml文件配置:

 <struts>
<constant name="struts.multipart.maxSize" value="520000000"></constant>
<package name="manager" extends="struts-default">
<action name="uploads" class="com.java1234.action.FilesuploadAction">
<result name="input">/filesupload.jsp</result>
<result name="success">/success.jsp</result>
</action>
<action name="download" class="com.java1234.action.FiledownloadAction">
<result type="stream">
<param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
</action>
</package>
</struts>

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

  1. Struts2文件上传和下载(原理)

    转自:http://zhou568xiao.iteye.com/blog/220732 1.    文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1)     ...

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

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

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

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

  4. 学习Struts--Chap07:Struts2文件上传和下载

    1.struts2文件上传 1.1.struts2文件上传的基本概述 在开发web应用的时候,我们一般会为用户提供文件上传的功能,比如用户上传一张图像作为头像等.为了能上传文件,我们必须将表单的met ...

  5. struts2 文件上传和下载,以及部分源代码解析

    struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form ...

  6. (八)Struts2 文件上传和下载

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 文件上传 Struts2 文件上传基于Struts2 拦 ...

  7. struts2学习(13)struts2文件上传和下载(1)

    一.Struts2文件上传: 二.配置文件的大小以及允许上传的文件类型: 三.大文件上传: 如果不配置上传文件的大小,struts2默认允许上传文件最大为2M: 2097152Byte:   例子实现 ...

  8. Struts2文件上传与下载

    一,页面 index.html 在页面中最重要的就是这个文件上传用的 form 表单,注意这里一定要把 form 的encyType属性明确标定为“multipart/form-data”,只有这样. ...

  9. struts2文件上传和下载

    1. struts系统中的拦截器介绍 过滤器:javaweb中的服务器组件,主要针对的请求和响应进行拦截. 拦截器:主要针对方法的调用,进行拦截器,当使用代理对象调用某个方法时候 对方法的调用进行拦截 ...

  10. 笔记:Struts2 文件上传和下载

    为了上传文件必须将表单的method设置为POST,将 enctype 设置为 muiltipart/form-data,只有设置为这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器. 上传 ...

随机推荐

  1. Codeforces Round #273 (Div. 2)-C. Table Decorations

    http://codeforces.com/contest/478/problem/C C. Table Decorations time limit per test 1 second memory ...

  2. python之常见的坑

    li = [1,2,3,4] # [1,3,4] # 索引值是奇数的删除 for i in range(4): if i % 2 == 1: li.pop(i) # 会报错 print(li) 面试题 ...

  3. 单表操作ORM

    博客园 首页 新随笔 联系 管理 订阅 随笔- 0  文章- 339  评论- 29  Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 ...

  4. Java第十二次作业:什么是一维数组?什么是对象数组?吃金币游戏2.0版 新增炸弹功能 新增游戏倒计时功能 新增胜利失败检测功能 使用如鹏游戏引擎制作窗体 一维数组设置金币

    什么是数组? 数组的定义:是用统一的名字代表这批数据,用序号来区分各个数据.数组是无序的数据元素按有序的下标组成的集合,分配固定空间大小的一种容器. 如何理解:其实就是一个同时放很多数据的变量. a= ...

  5. 开发工具IDEA环境安装配置

    开发工具IDEA环境安装配置 该工具和eclipse类似,但是使用感受确实比eclipse好,越来越多人开始使用IDEA了. 下载地址如下 : https://www.jetbrains.com/id ...

  6. substring substr slice 区别

    1. substring(start,end)  返回指定索引区间的字串,不改变原字符串 start 必需,开始位置的索引,一个非负的整数 end  可选,结束位置的索引(不包括其本身),如果未设置, ...

  7. 【线段树】bzoj3585: mex

    非常精妙的线段树题 Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三 ...

  8. MySQLfailover错误一则

    由于公司现有主库要转移到新的主库上,所以,我打算利用MySQLfailover工具的故障转移. 1.开发把程序账号转移到新主库上 2.停止现有主库,使之进行故障转移,转移期间会自动锁表,保持数据一致性 ...

  9. 【chm】【windows】win7下chm打开不显示内容

    修改chm属性里面,‘解除锁定’即可.点击chm文件,右键选择属性,点击最下方的解除锁定,保存,退出重新打开即可. ​

  10. mvn 发布

    mvn clean install deploy -Dadditionalparam=-Xdoclint:none