首页 > 编程 > Java > 正文

Struts2实现多文件上传功能

2019-11-26 11:35:12
字体:
来源:转载
供稿:网友

前台form 表单:设置method=post,enctype=multipart/form-data。

struts2在原有的上传解析器继承上做了进一步封装,更进一步简化了文件上传。

Action需要使用3个属性来封装该文件域的信息:

(1)类型为File的*属性封装了该文件域对应的文件内容;
(2)类型为String的***FileName属性封装了该文件域对应的文件的文件类型;
(3)类型为String的***ContentType属性封装了该文件域对应的文件的类型。

具体实现:

新建web项目

这里写图片描述

添加struts2相关包
myeclipse可直接下载,右击项目,如下。

这里写图片描述

前台

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html> <body>  <form action="upload.action" method="post" enctype="multipart/form-data">    <input type="file" name="upload" multiple="multiple"/>    <input type="submit" value="提交"/>  </form> </body></html>

配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>UploadFile</display-name> <filter>  <filter-name>struts2</filter-name>  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>*.action</url-pattern> </filter-mapping></web-app>

配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>  <constant name="struts.enable.DynamicMethodInvocation" value="false"/>  <constant name="struts.devMode" value="true"/>  <constant name="struts.multipart.saveDir" value="/tmp"/>  <constant name="struts.custom.i18n.resources" value="app"></constant>  <package name="default" namespace="/" extends="struts-default">    <action name="upload" class="com.yf.action.UploadAction">    <result>/index.jsp</result>    <interceptor-ref name="defaultStack"></interceptor-ref>    </action>  </package></struts>  

后台代码

public class UploadAction extends ActionSupport{  private List<File> upload;  private List<String> uploadContentType;  private List<String> uploadFileName;  public List<File> getUpload() {    return upload;  }  public void setUpload(List<File> upload) {    this.upload = upload;  }  public List<String> getUploadContentType() {    return uploadContentType;  }  public void setUploadContentType(List<String> uploadContentType) {    this.uploadContentType = uploadContentType;  }  public List<String> getUploadFileName() {    return uploadFileName;  }  public void setUploadFileName(List<String> uploadFileName) {    this.uploadFileName = uploadFileName;  }  @Override  public String execute() throws Exception {    //文件保存路径    String path = ServletActionContext.getServletContext().getRealPath("/images");    File file = new File(path);    //不存在则创建    if(!file.exists()){      file.mkdir();    }    //循环将文件上传到指定路径    for(int i = 0; i< upload.size(); i++){      FileUtils.copyFile(upload.get(i), new File(file,uploadFileName.get(i)));    }    return SUCCESS;  }

结果如下

这里写图片描述

这里写图片描述

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表