Struts 2实现文件上传示例图解

  1. FileUpload拦截器
  2. fileUpload拦截器的参数
  3. fileUpload拦截器的示例
fileUpload拦截器会自动处理包含文件的所有请求。
我们可以使用此拦截器来控制struts2中文件上传的工作, 例如定义允许的类型, 最大文件大小等。
文件上传拦截器的参数 为文件上传拦截器定义了2个参数。
Parameter Description
maximumSize 指定要上传的文件的最大大小。
allowedTypes 指定允许的类型。可能是image / png, image / jpg等。
自动添加参数 它会在请求中自动添加2个参数:
  1. 字符串fileName表示文件的文件名。
  2. 字符串contentType指定文件的内容类型。
fileName和contentType名称取决于文件的请求参数。如果filename是file, 则需要使用fileFileName和fileContentType。如果filename是userImage, 则需要在Action类中使用userImageFileName和userImageContentType。 使用Struts 2的图片上传示例 让我们看看文件上传应用程序的目录结构。
Struts 2实现文件上传示例图解

文章图片
1)创建UserImage.jsp
该jsp页面使用struts UI标记创建表单。它从用户那里接收文件。
index.jsp
< %@ page contentType="text/html; charset=UTF-8"%> < %@ taglib prefix="s" uri="/struts-tags"%> < html> < head> < title> Upload User Image< /title> < /head> < body> < h2> Struts2 File Upload & Save Example without Database < /h2> < s:actionerror /> < s:form action="userImage" method="post" enctype="multipart/form-data"> < s:file name="userImage" label="Image" /> < s:submit value="http://www.srcmini.com/Upload" align="center" /> < /s:form> < /body> < /html>

2)创建SuccessUserImage.jsp
该jsp页面使用struts UI标记创建表单。它从用户那里接收名称, 密码和电子邮件ID。
SuccessUserImage.jsp
< %@ page contentType="text/html; charset=UTF-8"%> < %@ taglib prefix="s" uri="/struts-tags"%> < html> < head> < title> Success: Upload User Image< /title> < /head> < body> < h2> Struts2 File Upload Example < /h2> User Image: < s:property value="http://www.srcmini.com/userImage" /> < br/> Content Type:< s:property value="http://www.srcmini.com/userImageContentType" /> < br/> File Name: < s:property value="http://www.srcmini.com/userImageFileName" /> < br/> Uploaded Image: < img src="http://www.srcmini.com/userimages/< s:property value="http://www.srcmini.com/userImageFileName"/> " width="100" height="100" /> < /body> < /html>

3)创建动作类
该操作类继承了ActionSupport类, 并覆盖了execute方法。
RegisterAction.java
package com.srcmini; import java.io.File; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.FileUtils; import com.opensymphony.xwork2.ActionSupport; public class FileUploadAction extends ActionSupport{ private File userImage; private String userImageContentType; private String userImageFileName; public String execute() { try { String filePath = ServletActionContext.getServletContext().getRealPath("/").concat("userimages"); System.out.println("Image Location:" + filePath); //see the server console for actual location File fileToCreate = new File(filePath, userImageFileName); FileUtils.copyFile(userImage, fileToCreate); //copying source file to new filereturn SUCCESS; } public File getUserImage() { return userImage; } public void setUserImage(File userImage) { this.userImage = userImage; } public String getUserImageContentType() { return userImageContentType; } public void setUserImageContentType(String userImageContentType) { this.userImageContentType = userImageContentType; } public String getUserImageFileName() { return userImageFileName; } public void setUserImageFileName(String userImageFileName) { this.userImageFileName = userImageFileName; } }

4)创建struts.xml
该xml文件通过名称输入和拦截器jsonValidatorWorkflowStack定义了一个额外的结果。
struts.xml
< !DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> < struts> < package name="fileUploadPackage" extends="struts-default"> < action name="userImage" class="com.srcmini.FileUploadAction"> < interceptor-ref name="fileUpload"> < param name="maximumSize"> 2097152< /param> < param name="allowedTypes"> image/png, image/gif, image/jpeg, image/pjpeg < /param> < /interceptor-ref> < interceptor-ref name="defaultStack"> < /interceptor-ref> < result name="success"> SuccessUserImage.jsp< /result> < result name="input"> UserImage.jsp< /result> < /action> < /package> < /struts>

【Struts 2实现文件上传示例图解】下载这个在Eclipse IDE中开发的示例(无jar)
输出
Struts 2实现文件上传示例图解

文章图片
Struts 2实现文件上传示例图解

文章图片
图像将不会显示在当前项目中。访问服务器控制台中打印的图像位置以查看图像。

    推荐阅读