在上一篇中给大家列出的单个文件的上传,那么这一篇咱们讲讲上传多个文件改怎么作呢?由于过程和上传单个文件的类似,所以在这里不细说,相信大家都能看懂,看不懂的可以在评论区留言,我看到之后会及时回复的!!
咱们开门见山的来吧
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了。