向lib下导入jar文件:commons-io-1.3.2.jar;该jar文件包含FileUtils类。
1)employeeAction中的代码为:
public class employeeAction {
// 要上传的文件
private File image;
// 上传文件的文件名称,image为上传字段的名称,FileName为固定字段
private String imageFileName;
public String getImageFileName() {
return imageFileName;
}
public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}
public File getImage() {
return image;
}
public void setImage(File image) {
this.image = image;
}
public String execute() throws Exception {
// 得到上传后被保存的文件的真实路径
String realpath = ServletActionContext.getServletContext().getRealPath("/images");
// 在内部运行是输出真实路径以便查找文件
System.out.println(realpath);
if (image != null) {// 如果上传文件不为空
// 用realpath创建一个文件,把文件image赋给新创建的文件,保存为savefile文件
File savefile = new File(new File(realpath), imageFileName);
// 如果savefile 未创建成功,重新创建
if (!savefile.getParentFile().exists()) {
savefile.getParentFile().mkdir();
}
// 将savefile文件拷贝给image文件
FileUtils.copyFile(image, savefile);
// 向request中传入值,当上传成功时,在输出界面上显示
ActionContext.getContext().put("message", "上传成功");
}
return "success";//跳转到Action
}
}
1)输入界面的代码为:
<body>
<form action="<%=request.getContextPath()%>
/employee/employee.action" enctype="multipart/form-data"
method="post">
文件:<input type="file" name="image"/>
<input type="submit" value="上传"/>
</form>
</body>
1)输出界面的代码为:
<body>
${message } <br>
</body>
4)struts.xml文件配置:
<struts>
<package name="employee" namespace="/employee"
extends="struts-default">
<action name="list*" class="employee.employeeAction"
method="{1}">
<result name="success">/message.jsp</result>
</action>
</package>
</struts>
(二)多个文件的上传:
struts.xml文件和输出层代码都与(一)中相同。
1)employeeAction中的代码:
public class employeeAction {
private File[] image;
private String[] imageFileName;
public File[] getImage() {
return image;
}
public void setImage(File[] image) {
this.image = image;
}
public String[] getImageFileName() {
return imageFileName;
}
public void setImageFileName(String[] imageFileName) {
this.imageFileName = imageFileName;
}
public String execute() throws Exception {
String realpath = ServletActionContext.getServletContext().getRealPath(
"/images");
System.out.println("文件存储路径:" + realpath);
if (image != null) {
File savedir = new File(realpath);
if (!savedir.exists()) savedir.mkdirs();
for (int i = 0; i < image.length; i++) {
File savefile = new File(savedir, imageFileName[i]);
FileUtils.copyFile(image[i], savefile);
}
ActionContext.getContext().put("message", "上传成功");
}
return "success";
}
2)输入界面的代码:
<form
action="<%=request.getContextPath()%>/employee/listexecute.
action" enctype="multipart/form-data" method="post">
<!-- 文件类型相同; name的值相同 , 且等于Action中的属性值 -->
文件1:<input type="file" name="image" /><br>
文件2:<input type="file" name="image" /><br>
文件3:<input type="file" name="image" /><br>
<input type="submit" value="上传" />
</form>