博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11.struts2文件上传
阅读量:6583 次
发布时间:2019-06-24

本文共 5231 字,大约阅读时间需要 17 分钟。

文件上传
1.上传单个文件
2.上传多个文件
 
1.上传单个文件
实现步骤:
(1)导入一个Jar包:commons-io-1.3.2.jar。只所以要导入这个Jar包,是因为要用到一个工具类FileUtil。若不使用此工具类,就无需导入此包了。
(2)把form表单的enctype设置为:“multipart/form-data”,method设置为“post”,否则此表单不能用于上传。
如下:
(3)在Action类中添加以下属性
private File uf;//上传的文件  private String ufFileName;//文件名称
           注意:蓝色部分对应于表单中文件字段的名称。而FileName是必须的。
最后是,在Action方法中实现对上传文件的操作。

2.上传多个文件

    与上传单个文件相比,发生了如下几个变化:

    (1)提交表单中出现多个文件上传栏,这多个的name属性名必须完全相同。
    (2)Action中文件不再为File类型了,而是File类型的数组或List。当然,文件名也为相应的数组或List了。
    (3)Action方法需遍历这些数组来上传这些文件。

 
下面例子都
已导入struts2核心jar包基础上,又导入了commons-io-1.3.2.jar包。
实例1:上传单个文件—fileupload
代码文档目录如下:

Step1:编写index.jsp页面
<%@ page pageEncoding="utf-8"%>          upload page             
文件

Step2:编写SingleFileUploadAction.java

package actions;import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import com.opensymphony.xwork2.ActionContext;public class SingleAction {    private File uf;    private String ufFileName;    public File getUf() {        return uf;    }    public void setUf(File uf) {        this.uf = uf;    }    public String getUfFileName() {        return ufFileName;    }    public void setUfFileName(String ufFileName) {        this.ufFileName = ufFileName;    }        public String execute(){        String savePath="D:/";        if(uf!=null)        {            File saveFile=new File(savePath,ufFileName);            try {                //将 uf 文件的内容复制到saveFile中。                FileUtils.copyFile(uf, saveFile);                ActionContext.getContext().put("message","文件上传成功!");            } catch (IOException e) {                e.printStackTrace();                ActionContext.getContext().put("message","文件上传失败!");            }                    }else{            ActionContext.getContext().put("message","没有指定要上传的文件");                    }        System.out.println(ufFileName);        return "success";    }    }

 

Step2:编写web.xml与struts.xml
web.xml如下:
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
index.jsp

修改上传文件大小限制:默认最大2M

使用方法:
    在struts.xml中添加下面这段代码:

 

struts.xml如下:

/message.jsp

 Step3:编写message.jsp

<%@ page pageEncoding="utf-8" isELIgnored="false"%>          message page                提示信息:${message}  

 

注意,当文件内容为空时,tomcat后台会报错。
部署发布,启动tomcat,输入地址:
http://127.0.0.1:8080/single_file_upload/
 

实例2:上传多个文件—fileupload
Step1:编写index.jsp页面
<%@ page pageEncoding="utf-8"%>          upload page             
文件1
文件2
文件3

Step2:编写MultipleAction.java

package actions;import java.io.File;import java.io.IOException;import org.apache.commons.io.FileUtils;import com.opensymphony.xwork2.ActionContext;public class MultipleAction {    private File[] ufs;    private String[] ufsFileName;    public File[] getUfs() {        return ufs;    }    public void setUfs(File[] ufs) {        this.ufs = ufs;    }    public String[] getUfsFileName() {        return ufsFileName;    }    public void setUfsFileName(String[] ufsFileName) {        this.ufsFileName = ufsFileName;    }    public String execute() {        StringBuffer sb=new StringBuffer();        String savePath = "D:/";        if (ufs != null) {            for (int i = 0; i < ufs.length; i++) {                if (ufs[i] != null) {                    File saveFile = new File(savePath,ufsFileName[i]);                    try {                        FileUtils.copyFile(ufs[i], saveFile);                        sb.append("文件"+(i+1)+"上传成功!");                    } catch (IOException e) {                        e.printStackTrace();                        sb.append("文件"+(i+1)+"上传失败!");                    }                }                             }        }else {            sb.append("文件指定要上传的文件!");                }        ActionContext.getContext().put("message",sb.toString());        return "success";    }}

 Step2:编写web.xml与struts.xml

web.xml如下:
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
index.jsp

struts.xml如下:

/message.jsp

Step3:编写message.jsp

<%@ page pageEncoding="utf-8" isELIgnored="false"%>      message page        提示信息:${message}               

 部署发布,启动tomcat,输入地址:

http://127.0.0.1:8080/mutiple_fle_upload/

 

注意:1.txt有内容,2.txt有内容,3.txt内容为空。

转载地址:http://wfxno.baihongyu.com/

你可能感兴趣的文章
asp.net与javascript编码解码
查看>>
io流
查看>>
URL、URI和URN
查看>>
20172313 2018-2019-1 《程序设计与数据结构》第八周学习总结
查看>>
beego框架/golang语言调用支付宝支付接口
查看>>
Nginx编译参数大全 configure参数中文详解
查看>>
解决Android提示去掉@Override问题
查看>>
C/C++作用域运算符::
查看>>
二、spark SQL交互scala操作示例
查看>>
限流(三)Redis + lua分布式限流
查看>>
mysql的优化:官网地址
查看>>
Selenium 进行web自动化测试
查看>>
python多线程多进程
查看>>
JJTree Tutorial for Advanced Java Parsing
查看>>
[Android Samples视频系列之ApiDemos]App-Activity-Forwarding
查看>>
20135306第十四周学习总结
查看>>
AutoMapper 5.0-升级指南
查看>>
DCOM中的APPID的用处,以及RemoteServerName的传递问题
查看>>
MYSQL的服务不见了
查看>>
去哪儿网支付系统架构演进全历程阅读心得
查看>>