Struts2实现多文件上传功能

前台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;

}

结果如下

以上是 Struts2实现多文件上传功能 的全部内容, 来源链接: utcz.com/p/214430.html

回到顶部