在上一篇中给大家列出的单个文件的上传,那么这一篇咱们讲讲上传多个文件改怎么作呢?由于过程和上传单个文件的类似,所以在这里不细说,相信大家都能看懂,看不懂的可以在评论区留言,我看到之后会及时回复的!!
咱们开门见山的来吧
1.创建个jsp表单页面,主要就是上传多个文件:
<body><s:form action="upload.action" method="post" enctype="multipart/form-data"><s:textfield name="file" label="标题"/><br/><%-- <s:file name="upload" label="选择文件"/><br/> --%><s:file name="mupload" label="选择文件1"/><br/><s:file name="mupload" label="选择文件2"/><br/><s:file name="mupload" label="选择文件3"/><br/><s:submit name="submit" value="上传文件"/></s:form></body>
2.我们接下来去写一下UploadAction里面:
package org.web;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {private File[] mupload; //封装上传文件的属性(多个)private String[] muploadContentType; //封装上传文件的类型(多个)private String[] muploadFileName; //封装上传文件的名称(多个)private String msavePath; //获取文件上传的路径(多个)//实现文件的多个上传public String execute() throws IOException{byte[] buffer=new byte[1024];for (int i = 0; i < mupload.length; i++) {//获取物理路径"/upload"String path=ServletActionContext.getServletContext().getRealPath(savePath);FileInputStream fis=new FileInputStream(getMupload()[i]);FileOutputStream fos=new FileOutputStream(path+"/"+getMuploadFileName()[i]);int length=fis.read(buffer);while (length>0) {//每次写入length长度的内容fos.write(buffer,0,length);length=fis.read(buffer);}fis.close();fos.flush();fos.close();}return SUCCESS;}public File[] getMupload() {return mupload;}public void setMupload(File[] mupload) {this.mupload = mupload;}public String[] getMuploadContentType() {return muploadContentType;}public void setMuploadContentType(String[] muploadContentType) {this.muploadContentType = muploadContentType;}public String[] getMuploadFileName() {return muploadFileName;}public void setMuploadFileName(String[] muploadFileName) {this.muploadFileName = muploadFileName;}public String getMsavePath() {return msavePath;}public void setMsavePath(String msavePath) {this.msavePath = msavePath;}}
3.nice,这里面已经搞定,咱们就移步到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><package name="default" namespace="/" extends="struts-default"><!-- 文件上传 --><action name="upload" class="org.web.UploadAction"><param name="savePath">/upload</param><result name="success">/upload_suc.jsp</result></action></package>
</struts>
最后发布运行就OK了。