struts2的文件上传相比我们自己利用第三方jar包(commons-fileupload-1.2.1.jar   commons-io-1.3.2.jar )要简单的多,当然struts2里面也是用的这两个jar包,不过人家封装好了,方便我们使用。

单文件上传:

1.action定义一个File变量,名字和表单name一样,文件会自动封装到这个对象中去

2.action定义一个String变量,名字是表单name名字+FileName,如下的myfileFileName,文件名字会自动封装到此对象中

3.工具类 FileUtils.copyFile(需要上传的文件, 目标文件)  ,如下FileUtils.copyFile(myfile, deskFile)

页面:

  <form action="upload" method="post" enctype="multipart/form-data">
文件1:<input type="file" name="myfile"></input><br/>
<input type="submit" value="上传"></input>
</form>

xml:

<action name="upload" class="ni.jun.yang.action.UploadAction" >
<param name="path">images</param> <!-- 定义上传存放的文件夹名字-->
<result name="success">welcome.jsp</result>
</action>

action:

import java.io.File;
import java.util.Date; import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; public class UploadAction implements Action{
private File myfile;
private String myfileFileName;
private String path;
public File getMyfile() {
return myfile;
}
public void setMyfile(File myfile) {
this.myfile = myfile;
}
public String getMyfileFileName() {
return myfileFileName;
}
public void setMyfileFileName(String myfileFileName) {
this.myfileFileName = myfileFileName;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
@Override
public String execute() throws Exception {
String filePath = ServletActionContext.getRequest().getRealPath(path);
File newFile = new File(filePath);
if(!newFile.exists()){
newFile.mkdirs();
}
File deskFile = new File(filePath + "/"+new Date().getTime()+"_"+myfileFileName);
FileUtils.copyFile(myfile, deskFile);
return SUCCESS;
} }

多文件上传:

1.和单文件上传一样,只不过用数组或集合来接收文件对象,不过表单中type = file 的标签的name属性要一样,其他和单文件上传一样

页面:

<form action="upload2" method="post" enctype="multipart/form-data">
名字:<input type="text" name="myname"></input><br/>
文件1:<input type="file" name="myfiles"></input><br/>
文件2:<input type="file" name="myfiles"></input><br/>
文件3:<input type="file" name="myfiles"></input><br/>
<input type="submit" value="上传"></input>
</form>

xml:

<action name="upload2" class="ni.jun.yang.action.UploadAction2" >
<param name="path">images2</param> <!-- 定义存放文件夹的名字-->
<result name="success">image.jsp</result>
<result name="error">upload.jsp</result>
</action>

action:

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Action; public class UploadAction2 implements Action {
private String myname;
private List<File> myfiles;
private List<String> myfilesFileName;
private String path;
private List<String> newName = new ArrayList<>(); public List<String> getNewName() {
return newName;
} public String getMyname() {
return myname;
} public void setMyname(String myname) {
this.myname = myname;
} public List<File> getMyfiles() {
return myfiles;
} public void setMyfiles(List<File> myfiles) {
this.myfiles = myfiles;
} public List<String> getMyfilesFileName() {
return myfilesFileName;
} public void setMyfilesFileName(List<String> myfileFileName) {
this.myfilesFileName = myfileFileName;
} public String getPath() {
return path;
} public void setPath(String path) {
this.path = path;
} @Override
public String execute() throws Exception {
boolean flag = false;
String filePath = ServletActionContext.getRequest().getRealPath(path);
File newFile = new File(filePath);
if(!newFile.exists()){
newFile.mkdirs();
}
List<File> list = getMyfiles();
List<String> nameList = getMyfilesFileName();
// System.out.println(list.size());
if(list != null && list.size() >0){
for (int i = 0; i < list.size(); i++) {
String newPath = new Date().getTime() + "_" + nameList.get(i);
File deskFile = new File(filePath + "/" +newPath);
// System.out.println(nameList.get(i));
newName.add(newPath);
FileUtils.copyFile(list.get(i), deskFile);
flag = true;
}
}
if(flag){
System.out.println(myname);
return SUCCESS;
}else{
return ERROR;
}
}
}

文件下载:  

1.文件下载和文件上传差不多,找到要下载的文件对象,和要下载到哪儿,创建2个File对象,然后就相当于是把 上传时候 FileUtils.copyFile(需要上传的文件, 目标文件)  中的两个参数换下位置

页面:jstl表达式显示上传的多个文件

<c:forEach items="${newName }" var="image">
<img src="data:images2/${image }"><a href="download?filename=${image }">下载</a>
</c:forEach>

  xml:

<action name="download" class="ni.jun.yang.action.DownloadAction" >
<param name="path">image</param>
<result name="success">welcome.jsp</result>
<result name="error">image.jsp</result>
</action>

action:

import java.io.File;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
public class DownloadAction implements Action {
private String filename;
private String path; public String getFilename() {
return filename;
} public void setFilename(String filename) {
this.filename = filename;
} public String getPath() {
return path;
} public void setPath(String path) {
this.path = path;
} @Override
public String execute() throws Exception {
String newPath = "D:\\"+path; //定义下载的路径
String oldPath = ServletActionContext.getRequest().getRealPath("images2");//获取资源的路径
System.out.println(newPath + "/" +filename);
System.out.println(oldPath);
File deskFile = new File(newPath + "/" +filename); //目标对象
File oldFile = new File(oldPath+"/"+filename); //资源对象
FileUtils.copyFile(oldFile, deskFile);
return SUCCESS;
} }

  

struts2一个和多个文件上传及下载的更多相关文章

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

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

  2. Struts2学习(六)———— 文件上传和下载

    一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮 ...

  3. SpringBoot下文件上传与下载的实现

    原文:http://blog.csdn.net/colton_null/article/details/76696674 SpringBoot后台如何实现文件上传下载? 最近做的一个项目涉及到文件上传 ...

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

  8. struts2文件上传和下载

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

  9. struts2学习(14)struts2文件上传和下载(4)多个文件上传和下载

    四.多个文件上传: 五.struts2文件下载: 多个文件上传action com.cy.action.FilesUploadAction.java: package com.cy.action; i ...

随机推荐

  1. python+selenium自动化软件测试(第2章):WebDriver API

    2.1 操作元素基本方法 前言前面已经把环境搭建好了,从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可 ...

  2. Hadoop百度百科

    http://baike.baidu.com/link?url=-lfWMjGNGBJxKC1QKKhefXvB7Wou6Ztn8mgeZf8u-1iH5fcf25lbRfqpW1SGwOmQL0JI ...

  3. Java基础---String类和基本数据类型包装类

    第一讲     String类 一.概述         String是字符串的类类型,用于描述字符串事物.字符串是一个特殊的对象.特殊之处就在于: Stings= new String();和Str ...

  4. 常用Git操作

    --------------------git-------------------- 1.简介     1.Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1]  ...

  5. [PSIDE]PeopleSoft PSIDE无法启动因为缺失MSVCR100.dll解决办法

    “The program can’t start because MSVCR100.dll is missing from your computer” 当开发工具是绿色版的时候,在打开PSIDE时很 ...

  6. WCF(三)分布式事务

    最近在学WCF,所以有两个设想疑问(菜鸟多疑问): 如果有WCF服务A,WCF服务B,客户端调用WCF服务A插入一条数据,然后再调用服务B也插入一条数据,然而服务B出错了进行了回滚,服务A能不能也进行 ...

  7. 图片懒加载Demo

    相关知识: [js获取元素位置+元素大小]全面总结

  8. 【Alpha阶段】第二次scrum meeting

    每日任务: ·1.本次会议为第二次Meeting会议: ·2.本次会议于今日上午08:30第五社区五号楼下召开,会议时长15min. 一.今日站立式会议照片: 二.每个人的工作: 三.工作中遇到的困难 ...

  9. 201521123083《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  10. 【Alpha阶段】第六次scrum meeting

    一.会议照片 二.会议内容 姓名 学号 负责模块 昨日任务完成度 今日任务 杨爱清 099 界面设计和交互功能 完成 设计界面 杨立鑫 100 数据库搭建和其他 完成 将数据库与其他模块连接 林 钊 ...