利用struts实现多文件上传
fileUpload.jsp代码如下:
FileUploadForm.java代码如下:
FileUploadAction.java代码如下:
success.jsp代码如下:
struts-config.xml配置如下:
web.xml配置如下:
fileUpload.jsp代码如下:
<%
@ page language
=
"
java
"
pageEncoding
=
"
gb2312
"
contentType
=
"
text/html;charset=gb2312
"
%>
<% @ taglib uri = " /WEB-INF/struts-bean.tld " prefix = " bean " %>
<% @ taglib uri = " /WEB-INF/struts-html.tld " prefix = " html " %>
< html >
< head >
< title > JSP for FileUploadForm form </ title >
< script language = " javascript " type = " text/javascript " >
var i = 0 ;
function addInput() {
if(i>=0){
var attach = "testFile(" + i + ")";
if(createInput(attach))
i=i+1;
}
}
function deleteInput() {
if(i>=1){
i=i-1;
if(!removeInput())
i=i+1;
}
}
function createInput(nm) {
var p=document.createElement("div");
var aElement=document.createElement("input");
aElement.name=nm;
aElement.id=nm;
aElement.type="file";
aElement.size="50";
//aElement.value="thanks";
//aElement.οnclick=Function("asdf()");
p.appendChild(aElement);
if(document.getElementById("upload").appendChild(p) == null)
{
return false;
}
return true;
}
function removeInput(nm) {
var aElement = document.getElementById("upload");
if(aElement.removeChild(aElement.lastChild) == null)
return false;
return true;
}
function check() {
var aElement = document.getElementById("upload");
var index = aElement.children.length;
var fso=new ActiveXObject("Scripting.FileSystemObject");
var filesize=0;
while(index>0){
var s = aElement.children[index-1].children[0].value;
if(s==''){
alert('请为'+i+'个输入选择文件');
return false ;
}else{
var f=fso.GetFile(s);
filesize=filesize+f.size
}
index = index-1;
}
if(filesize>15728640){
alert('所传文件总大小不能超过15M');
return false;
}
return true ;
}
</ script >
</ head >
< body >
< center >
< html:form action = " /fileUpload " method = " post "
enctype = " multipart/form-data " onsubmit = " return check() " >
<%--
enctype属性可设置或返回表单内容的MIME类型,如果表单没有enctype属性,默认的值为: " application/x-www-form-urlencoded " ,
当内容为“文件”,值应该为 " multipart/form-data " .
application / x - www - form - urlencoded: 窗体数据被编码为名称 / 值对。这是标准的编码格式。
multipart / form - data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text / plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
--%>
< span id = " upload " ></ span >< br >
< input type = " button " name = " button " value = " 添加附件 " onclick = " addInput() " >& nbsp; & nbsp;
< input type = " button " name = " button " value = " 删除附件 " onclick = " deleteInput() " >
< br >< font color = red > 上传文件总大小不能超过15M </ font >< br >
< html:submit />< html:cancel />
</ html:form >
</ center >
</ body >
</ html >
<% @ taglib uri = " /WEB-INF/struts-bean.tld " prefix = " bean " %>
<% @ taglib uri = " /WEB-INF/struts-html.tld " prefix = " html " %>
< html >
< head >
< title > JSP for FileUploadForm form </ title >
< script language = " javascript " type = " text/javascript " >
var i = 0 ;
function addInput() {
if(i>=0){
var attach = "testFile(" + i + ")";
if(createInput(attach))
i=i+1;
}
}
function deleteInput() {
if(i>=1){
i=i-1;
if(!removeInput())
i=i+1;
}
}
function createInput(nm) {
var p=document.createElement("div");
var aElement=document.createElement("input");
aElement.name=nm;
aElement.id=nm;
aElement.type="file";
aElement.size="50";
//aElement.value="thanks";
//aElement.οnclick=Function("asdf()");
p.appendChild(aElement);
if(document.getElementById("upload").appendChild(p) == null)
{
return false;
}
return true;
}
function removeInput(nm) {
var aElement = document.getElementById("upload");
if(aElement.removeChild(aElement.lastChild) == null)
return false;
return true;
}
function check() {
var aElement = document.getElementById("upload");
var index = aElement.children.length;
var fso=new ActiveXObject("Scripting.FileSystemObject");
var filesize=0;
while(index>0){
var s = aElement.children[index-1].children[0].value;
if(s==''){
alert('请为'+i+'个输入选择文件');
return false ;
}else{
var f=fso.GetFile(s);
filesize=filesize+f.size
}
index = index-1;
}
if(filesize>15728640){
alert('所传文件总大小不能超过15M');
return false;
}
return true ;
}
</ script >
</ head >
< body >
< center >
< html:form action = " /fileUpload " method = " post "
enctype = " multipart/form-data " onsubmit = " return check() " >
<%--
enctype属性可设置或返回表单内容的MIME类型,如果表单没有enctype属性,默认的值为: " application/x-www-form-urlencoded " ,
当内容为“文件”,值应该为 " multipart/form-data " .
application / x - www - form - urlencoded: 窗体数据被编码为名称 / 值对。这是标准的编码格式。
multipart / form - data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
text / plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
--%>
< span id = " upload " ></ span >< br >
< input type = " button " name = " button " value = " 添加附件 " onclick = " addInput() " >& nbsp; & nbsp;
< input type = " button " name = " button " value = " 删除附件 " onclick = " deleteInput() " >
< br >< font color = red > 上传文件总大小不能超过15M </ font >< br >
< html:submit />< html:cancel />
</ html:form >
</ center >
</ body >
</ html >
FileUploadForm.java代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.iss.struts.form;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
/**
* MyEclipse Struts
* Creation date: 07-26-2007
*
* XDoclet definition:
* @struts.form name="fileUploadForm"
*/
public class FileUploadForm extends ActionForm {
private ArrayList formFiles = new ArrayList();
public void setTestFile(String iIndex, FormFile formFile)
{
this.formFiles.add(formFile);
}
public FormFile getTestFile(String iIndex)
{
return (FormFile) formFiles.get(Integer.parseInt(iIndex));
}
public ArrayList getTestFiles()
{
return this.formFiles;
}
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
}
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.iss.struts.form;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
/**
* MyEclipse Struts
* Creation date: 07-26-2007
*
* XDoclet definition:
* @struts.form name="fileUploadForm"
*/
public class FileUploadForm extends ActionForm {
private ArrayList formFiles = new ArrayList();
public void setTestFile(String iIndex, FormFile formFile)
{
this.formFiles.add(formFile);
}
public FormFile getTestFile(String iIndex)
{
return (FormFile) formFiles.get(Integer.parseInt(iIndex));
}
public ArrayList getTestFiles()
{
return this.formFiles;
}
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
}
FileUploadAction.java代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.iss.struts.action;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.iss.struts.form.FileUploadForm;
/**
* MyEclipse Struts
* Creation date: 07-26-2007
*
* XDoclet definition:
* @struts.action path="/fileUpload" name="fileUploadForm" input="/form/fileUpload.jsp" scope="request" validate="true"
*/
public class FileUploadAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
* @throws IOException
* @throws FileNotFoundException
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException {
FileUploadForm fileUploadForm = (FileUploadForm) form;
ArrayList myFiles=fileUploadForm.getTestFiles();
if(myFiles.size()>0){
String sysroot = servlet.getServletContext()
.getInitParameter("sysroot");
for(int j=0;j<myFiles.size();j++){
FormFile uploadFile = (FormFile)myFiles.get(j);
String fname=uploadFile.getFileName();
InputStream streamIn=uploadFile.getInputStream();
OutputStream streamOut=new FileOutputStream(sysroot+"/"+fname);
int bytesRead=0;
byte[] buffer=new byte[8192];
while((bytesRead=streamIn.read(buffer, 0, 8192))!=-1){
streamOut.write(buffer, 0, bytesRead);
}
streamOut.close();
streamIn.close();
}
}
return mapping.findForward("success");
}
}
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.iss.struts.action;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.iss.struts.form.FileUploadForm;
/**
* MyEclipse Struts
* Creation date: 07-26-2007
*
* XDoclet definition:
* @struts.action path="/fileUpload" name="fileUploadForm" input="/form/fileUpload.jsp" scope="request" validate="true"
*/
public class FileUploadAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
* @throws IOException
* @throws FileNotFoundException
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException {
FileUploadForm fileUploadForm = (FileUploadForm) form;
ArrayList myFiles=fileUploadForm.getTestFiles();
if(myFiles.size()>0){
String sysroot = servlet.getServletContext()
.getInitParameter("sysroot");
for(int j=0;j<myFiles.size();j++){
FormFile uploadFile = (FormFile)myFiles.get(j);
String fname=uploadFile.getFileName();
InputStream streamIn=uploadFile.getInputStream();
OutputStream streamOut=new FileOutputStream(sysroot+"/"+fname);
int bytesRead=0;
byte[] buffer=new byte[8192];
while((bytesRead=streamIn.read(buffer, 0, 8192))!=-1){
streamOut.write(buffer, 0, bytesRead);
}
streamOut.close();
streamIn.close();
}
}
return mapping.findForward("success");
}
}
success.jsp代码如下:
<%
@ page language
=
"
java
"
pageEncoding
=
"
GB18030
"
%>
<% @ taglib uri = " /WEB-INF/struts-bean.tld " prefix = " bean " %>
<% @ taglib uri = " /WEB-INF/struts-html.tld " prefix = " html " %>
<% @ taglib uri = " /WEB-INF/struts-logic.tld " prefix = " logic " %>
<! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " >
< html >
< head >
< title > success.jsp </ 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 " >
<!--
< link rel = " stylesheet " type = " text/css " href = " styles.css " >
-->
</ head >
< body >
上传文件成功! < br >
</ body >
</ html >
<% @ taglib uri = " /WEB-INF/struts-bean.tld " prefix = " bean " %>
<% @ taglib uri = " /WEB-INF/struts-html.tld " prefix = " html " %>
<% @ taglib uri = " /WEB-INF/struts-logic.tld " prefix = " logic " %>
<! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " >
< html >
< head >
< title > success.jsp </ 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 " >
<!--
< link rel = " stylesheet " type = " text/css " href = " styles.css " >
-->
</ head >
< body >
上传文件成功! < br >
</ body >
</ html >
struts-config.xml配置如下:
<?
xml version="1.0" encoding="UTF-8"
?>
<! DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd" >
< struts-config >
< data-sources />
< form-beans >
< form-bean name ="fileUploadForm" type ="com.iss.struts.form.FileUploadForm" />
</ form-beans >
< global-exceptions />
< global-forwards />
< action-mappings >
< action
attribute ="fileUploadForm"
input ="/form/fileUpload.jsp"
name ="fileUploadForm"
path ="/fileUpload"
scope ="request"
type ="com.iss.struts.action.FileUploadAction" >
< forward name ="success" path ="/success.jsp" />
</ action >
</ action-mappings >
< message-resources parameter ="com.iss.struts.ApplicationResources" />
</ struts-config >
<! DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd" >
< struts-config >
< data-sources />
< form-beans >
< form-bean name ="fileUploadForm" type ="com.iss.struts.form.FileUploadForm" />
</ form-beans >
< global-exceptions />
< global-forwards />
< action-mappings >
< action
attribute ="fileUploadForm"
input ="/form/fileUpload.jsp"
name ="fileUploadForm"
path ="/fileUpload"
scope ="request"
type ="com.iss.struts.action.FileUploadAction" >
< forward name ="success" path ="/success.jsp" />
</ action >
</ action-mappings >
< message-resources parameter ="com.iss.struts.ApplicationResources" />
</ struts-config >
web.xml配置如下:
<?
xml version="1.0" encoding="UTF-8"
?>
< web-app xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" version ="2.4" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< context-param >
< param-name > sysroot </ param-name >
< param-value > E:/FileManage </ param-value >
</ context-param >
< servlet >
< servlet-name > action </ servlet-name >
< servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
< init-param >
< param-name > config </ param-name >
< param-value > /WEB-INF/struts-config.xml </ param-value >
</ init-param >
< init-param >
< param-name > debug </ param-name >
< param-value > 3 </ param-value >
</ init-param >
< init-param >
< param-name > detail </ param-name >
< param-value > 3 </ param-value >
</ init-param >
< load-on-startup > 0 </ load-on-startup >
</ servlet >
< servlet-mapping >
< servlet-name > action </ servlet-name >
< url-pattern > *.do </ url-pattern >
</ servlet-mapping >
</ web-app >
< web-app xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" version ="2.4" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< context-param >
< param-name > sysroot </ param-name >
< param-value > E:/FileManage </ param-value >
</ context-param >
< servlet >
< servlet-name > action </ servlet-name >
< servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
< init-param >
< param-name > config </ param-name >
< param-value > /WEB-INF/struts-config.xml </ param-value >
</ init-param >
< init-param >
< param-name > debug </ param-name >
< param-value > 3 </ param-value >
</ init-param >
< init-param >
< param-name > detail </ param-name >
< param-value > 3 </ param-value >
</ init-param >
< load-on-startup > 0 </ load-on-startup >
</ servlet >
< servlet-mapping >
< servlet-name > action </ servlet-name >
< url-pattern > *.do </ url-pattern >
</ servlet-mapping >
</ web-app >