猿教程 Logo

Struts2拦截器:fileUpload 拦截器

fileUpload拦截器自动适用于包含文件的所有请求。

我们可以使用这个拦截器来控制struts2中文件上传的工作,例如定义允许的类型,最大文件大小等。

fileupload拦截器的参数

为fileupload拦截器定义了2个参数。

参数描述
maximumSize指定要上传的文件的最大大小。
allowedTypes指定允许的类型。 它可能是image / png,image / jpg等

自动添加参数

它会在请求中自动添加2个参数:

  1. String fileName表示文件的文件名。

  2. String contentType指定文件的内容类型。

fileName和contentType名称取决于该文件的请求参数。 如果filename是文件,则需要使用fileFileName和fileContentType。 如果filename是userImage,则需要在Action类中使用userImageFileName和userImageContentType。


图片上传示例使用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="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="userImage" /><br/>  
        Content Type:<s:property value="userImageContentType" /><br/>  
        File Name:  <s:property value="userImageFileName" /><br/>  
        Uploaded Image: <img src="userimages/<s:property value="userImageFileName"/>"   
                                                     width="100" height="100" />  
    </body>  
</html>



3)创建action类

此操作类继承ActionSupport类并覆盖execute方法。

RegisterAction.java

package com.javatpoint;
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 file
			
		return 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.javatpoint.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>

输出



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


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Struts/struts-2-file-upload-example.html