- FileUpload拦截器
- fileUpload拦截器的参数
- fileUpload拦截器的示例
我们可以使用此拦截器来控制struts2中文件上传的工作, 例如定义允许的类型, 最大文件大小等。
文件上传拦截器的参数 为文件上传拦截器定义了2个参数。
Parameter | Description |
---|---|
maximumSize | 指定要上传的文件的最大大小。 |
allowedTypes | 指定允许的类型。可能是image / png, image / jpg等。 |
- 字符串fileName表示文件的文件名。
- 字符串contentType指定文件的内容类型。
文章图片
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验证教程介绍
- vue 移动端禁用安卓手机返回键
- spring boot项目application.properties多环境配置文件jar包外部配置文件
- Android app 性能优化的思考--性能卡顿不好的原因在哪()
- android studio InnerClass annotations are missing corresponding EnclosingMember annotations. Such In
- 解压Assets.car获取App中的图片资源
- 如何在VMware里安装android-x86
- [???][Dapper]??????????????????