多个文件上传
//准备文件
1.上传多个文件页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>登录页面</title> </head> <body> <s:form action="upload.action" enctype="multipart/form-data" method="post"> <s:file name="upload" label="选择文件" /> <br /> <s:file name="upload" label="选择文件" /> <br /> <s:file name="upload" label="选择文件" /> <br /> <s:submit name="submit" value="上传文件"></s:submit> </s:form> </body> </html>
2.在struts.xml中配置相应的action
<?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.devMode" value="false" /> <package name="default" namespace="/" extends="struts-default"> <action name="upload" class="cn.happy.action.UploadAction" method="execute"> <param name="savePath">/image</param> <result name="success">/upload/success.jsp</result> </action> </package> </struts>
3.在根据action节点找对应的类
package cn.happy.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { /*** * 多文件上传 * @return */ // 上传文件的属性 private File[] upload; // 上传文件的类型 private String[] uploadContentType; // 上传文件的名称 private String[] uploadFileName; // 上传文件的地址 private String savePath; @Override public String execute() throws Exception{ byte[] buffer=new byte[1024]; for(int i=0;i<upload.length;i++){ //建立上传文件的出入流 FileInputStream fis=new FileInputStream(getUpload()[i]); //建立上传文件的输出流, getImageFileName()[i] FileOutputStream fos=new FileOutputStream(getSavePath()+"\\"+getUploadFileName()[i]); int length=fis.read(buffer); while(length>0){ fos.write(buffer,0,length); length=fis.read(buffer); } fis.close(); fos.flush(); fos.close(); } return SUCCESS; } public File[] getUpload() { return upload; } public void setUpload(File[] upload) { this.upload = upload; } public String[] getUploadContentType() { return uploadContentType; } public void setUploadContentType(String[] uploadContentType) { this.uploadContentType = uploadContentType; } public String[] getUploadFileName() { return uploadFileName; } public void setUploadFileName(String[] uploadFileName) { this.uploadFileName = uploadFileName; } public String getSavePath() { return ServletActionContext.getServletContext().getRealPath(savePath); } public void setSavePath(String savePath) { this.savePath = savePath; } }
4.如果成功就去找成功页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>成功页面</title> </head> <body> 您所上传的文件是:<s:property value="uploadFileName"/><br/> 文件类型:<s:property value="uploadContentType"/> </body> </html>