web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>/*</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.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.multipart.maxSize" value="20971520000"></constant>
<package name="default" namespace="/" extends="json-default">
<action name="uploadAction" class="com.huawei.s2.action.UploadAction" />
<action name="uploadBatchAction" class="com.huawei.s2.action.UploadBatchAction" />
</package>
</struts>
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>This is my JSP page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script src="js/jquery-1.8.3.js"></script>
</head>
<body>
<form action="uploadAction!uploadFile" enctype="multipart/form-data" method="post">
<input name="uname" value="张三" /><br>
<input type="file" name="file" /><br>
<input type="submit" value="提交">
</form>
</body>
</html>
index2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>This is my JSP page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script src="js/jquery-1.8.3.js"></script>
</head>
<body>
<form action="uploadBatchAction!uploadFile" enctype="multipart/form-data" method="post">
<input name="uname" value="张三" /><br>
<fieldset>
<legend><input type="button" value="添加"/></legend>
<div><input type="file" name="files" /><input type="button" value="删除"></div>
<div><input type="file" name="files" /><input type="button" value="删除"></div>
<div><input type="file" name="files" /><input type="button" value="删除"></div>
</fieldset>
<input type="submit" value="提交">
</form>
</body>
</html>
UploadAction:
package com.huawei.s2.action;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
public class UploadAction {
private String uname;
private File file;// File 类型属性接收上传文件 属性名必须匹配表单域file的名字
private String fileFileName;// 要想获取上传文件的文件名 ,属性名必须这样写: file表单域的name值+FileName
public void uploadFile() throws Exception{
System.out.println(uname+"========="+fileFileName);
String realPath =ServletActionContext.getServletContext().getRealPath("/resources");
FileUtils.copyFile(file, new File(realPath+"/"+UUID.randomUUID().toString()+"_"+fileFileName));
/*BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(realPath+"/"+fileFileName));
int temp = -1;
while((temp=bis.read())!=-1){
bos.write(temp);
}
bos.flush();
bos.close();
bis.close();*/
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
}
UploadBatchAction:
package com.huawei.s2.action;
import java.io.File;
import java.util.Arrays;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
public class UploadBatchAction {
private String uname;
private File[] files;// File 类型属性接收上传文件 属性名必须匹配表单域file的名字
private String[] filesFileName;// 要想获取上传文件的文件名 ,属性名必须这样写: file表单域的name值+FileName
public void uploadFile() throws Exception{
System.out.println(uname+"========="+Arrays.toString(filesFileName));
String realPath =ServletActionContext.getServletContext().getRealPath("/resources");
for(int i=0;i<files.length;i++){
FileUtils.copyFile(files[i], new File(realPath+"/"+UUID.randomUUID().toString()+"_"+filesFileName[i]));
}
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public File[] getFiles() {
return files;
}
public void setFiles(File[] files) {
this.files = files;
}
public String[] getFilesFileName() {
return filesFileName;
}
public void setFilesFileName(String[] filesFileName) {
this.filesFileName = filesFileName;
}
}