单个文件上传
关于如何创建Struts2项目:Struts2 初体验。
一、创建jsp页面:
注意!要上传文件,表单必须添加 enctype 属性,如下: enctype="multipart/form-data"
index.jsp 代码如下:
Insert title here二、创建Action类:
1. 添加三个私有字段,并添加相应的get,set方法。
private File file; ——上传的文件,变量名对应页面上"file"input的name属性值。类型为java.io.File
private String fileContentType;——上传文件的格式类型名,变量名格式为:页面上"file"input的name属性值+ContentType
private String fileFileName——上传的文件名,变量名格式为:页面上"file"input的name属性值+fileFileName。
2. 使用struts2提供的FileUtils类拷贝进行文件的拷贝。FileUtils类位于org.apache.commons.io包下。
3. 在项目目录下的WebContent目录下添加 upload 文件夹,用于存放客户端上传过来的文件,对应第15行代码。
Upload.java代码如下:
1 importjava.io.File;2 importjava.io.IOException;3 importorg.apache.commons.io.FileUtils;4 importorg.apache.struts2.ServletActionContext;5 importcom.opensymphony.xwork2.ActionSupport;6
7 public class Upload extendsActionSupport{8 privateFile file;9 privateString fileContentType;10 privateString fileFileName;11
12 @Override13 public String execute() throwsException {14 //得到上传文件在服务器的路径加文件名
15 String target=ServletActionContext.getServletContext().getRealPath("/upload/"+fileFileName);16 //获得上传的文件
17 File targetFile=newFile(target);18 //通过struts2提供的FileUtils类拷贝
19 try{20 FileUtils.copyFile(file, targetFile);21 } catch(IOException e) {22 e.printStackTrace();23 }24 returnSUCCESS;25 }26
27 //省略get,set方法...........
28
29 }
三、在struts.xml中添加相应的配置代码。
struts.xml代码如下:
/p>
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
index.jsp
四、测试。
启动服务器,进入index页面。
选择一改图片,点击上传提交表单。
打开upload文件夹(注意,这里指的是web服务器下的目录,如我用的web服务器是tomcat安装在电脑D盘,项目名称为“Struts2Upload”那么其路径为:D:\apache-tomcat-7.0.40\webapps\Struts2Upload\upload)可以看到刚才选中的图片已经上传到该目录下了。
上传多个文件
一、修改页面文件
增加继续添加按钮和 addfile() 方法,让页面可以通过javascript增加 input 标签。
修改后的 index.jsp代码如下:
1
2 pageEncoding="UTF-8"%>
3
4
5
6
7
8 //添加javascript方法 addfile() 在页面中境加input标签、
9 functionaddfile(){10 varfile=document.createElement("input");11 file.type="file";12 file.name="file";13 document.getElementById("fileList").appendChild(file);14 document.getElementById("fileList").appendChild(document.createElement("br"));15 }16
17
Insert title here18
19
20
21
22
23
24