struts2一个和多个文件上传及下载
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一个和多个文件上传及下载的更多相关文章
- Struts2第六篇【文件上传和下载】
前言 在讲解开山篇的时候就已经说了,Struts2框架封装了文件上传的功能--..本博文主要讲解怎么使用Struts框架来完成文件上传和下载 回顾以前的文件上传 首先,我们先来回顾一下以前,我们在we ...
- Struts2学习(六)———— 文件上传和下载
一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相应的处理,而在struts2中就不需要了,因为有一个fileUpload拦截器帮 ...
- SpringBoot下文件上传与下载的实现
原文:http://blog.csdn.net/colton_null/article/details/76696674 SpringBoot后台如何实现文件上传下载? 最近做的一个项目涉及到文件上传 ...
- Struts2 之 实现文件上传和下载
Struts2 之 实现文件上传和下载 必须要引入的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar 01.文件上传需要分别在struts.xm ...
- 十六、Struts2文件上传与下载
文件上传与下载 1.文件上传前提:<form action="${pageContext.request.contextPath}/*" method="post& ...
- 【SSH2(实用文章)】--Struts2文件上传和下载的例子
回想一下,再上一篇文章Struts2实现机制,该步骤做一步一步来解决,这种决心不仅要理清再次Struts2用法.映射机制及其在深入分析.最后一个例子来介绍Struts2一种用法,这里将做一个有关文件上 ...
- Struts2学习总结——文件上传与下载
Struts2文件上传与下载 1.1.1新建一个Maven项目(demo02) 在此添加Web构面以及 struts2 构面 1.2.1配置Maven依赖(pom.xml 文件) <?xml v ...
- struts2文件上传和下载
1. struts系统中的拦截器介绍 过滤器:javaweb中的服务器组件,主要针对的请求和响应进行拦截. 拦截器:主要针对方法的调用,进行拦截器,当使用代理对象调用某个方法时候 对方法的调用进行拦截 ...
- struts2学习(14)struts2文件上传和下载(4)多个文件上传和下载
四.多个文件上传: 五.struts2文件下载: 多个文件上传action com.cy.action.FilesUploadAction.java: package com.cy.action; i ...
随机推荐
- GBK和UTF8的区别
GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1. UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中 ...
- GoogleNet:inceptionV3论文学习
Rethinking the Inception Architecture for Computer Vision 论文地址:https://arxiv.org/abs/1512.00567 Abst ...
- python3 requests 获取 拉勾工作数据
#-*- coding:utf-8 -*- __author__ = "carry" import requests,json for x in range(1, 15): url ...
- 谈一谈EasyUI中TreeGrid的过滤功能
写在最前面 这个星期一直在纠结easyui的treegrid的过滤功能,原因呢,自然是项目中一个莫名奇妙的需求. easyui虽说是后端程序员的前端框架,但是说句实话,除去api,让我直接写里面的节点 ...
- datable 翻页事件处理
JQuery datatable插件,点下一页在点击事件无效问题 (2013-10-16 16:01:54) 转载▼ 分类: C# 在MVC的项目中,我利用jquery datatable 来实现 ...
- 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍
在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...
- 转:jquery 父、子页面之间页面元素的获取,方法的调用
一.jQuery 父.子页面之间页面元素的获取,方法的调用: 1. 父页面获取子页面元素: 格式:$("#iframe的ID").contents().find("#if ...
- 团队作业4——第一次项目冲刺(Alpha版本)2017.4.23
1.当天站立式会议照片 本次会议为第一次会议 本次会议在5号公寓1楼召开,本次会议内容: ①:做第一天的简单分工 ②:讨论每个人是否对安排的任务有苦难 ③:规定完成时间是在第二天之前 ④:遇到困难,及 ...
- 团队作业4----第一次项目冲刺(Alpha版本)4.24
a.提供当天站立式会议照片 会议内容: ①:对数据库的设计存在问题的进一步讨论 ②:讨论需求分析中的存在的难解决的问题,比如要做到较好的反应用户的行为. ③:分配今天的任务 b. 每个人的工作 工作完 ...
- Java 第二周总结
1.本周学习总结 (1)斐波那契函数 public static int fibonacci(int n)//斐波那契函数 { if(n<=2) { return 1; } else { ret ...