`

Struts2 part 7:文件上传

阅读更多

 

 

 

 

 1、单文件上传

页面表单MIME封装类型为enctype="multipart/form-data" ,提交方式为post,Struts2使用FileUpload实现文件上传

jsp

	<form action="${pageContext.request.contextPath}/demo01/upload1.action" method="post" enctype="multipart/form-data">
		<input type="file" name="upload"><br/> 
		<input type="submit">
	</form>

 action,Action中必须定义三个变量,变量名称和jsp表单中的name属性对应,File类型的“xxx”、String类型的“xxxContentType”、String类型的“xxxFileName”

public class UploadAction1 extends ActionSupport {
	private File upload;
	private String uploadContentType;
	private String uploadFileName;

	@Override
	public String execute() throws Exception {
		File destFile = new File(ServletActionContext.getServletContext().getRealPath("/upload") + "/" + uploadFileName);
		FileUtils.copyFile(upload, destFile);
		return NONE;
	}

	public void setUpload(File upload) {
		this.upload = upload;
	}

	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

}

 配置

<package name="demo01" namespace="/demo01" extends="struts-default">
		<action name="upload1" class="demo01.UploadAction1"></action>
	</package>

 

 2、文件上传的常量配置

通过fileUpload拦截器设置文件上传类型和大小,设置只对当前action有效

	<package name="demo01" namespace="/demo01" extends="struts-default">
		<action name="upload1" class="demo01.UploadAction1">
			<result name="input">/demo01/upload1.jsp</result>
			<interceptor-ref name="defaultStack">
				<param name="fileUpload.allowedExtensions">.mp3,.txt</param>
				<param name="fileUpload.maximumSize">6000000</param>
			</interceptor-ref>
		</action>
	</package>

 在src目录下配置国际化资源文件messages.properties

struts.messages.error.content.type.not.allowed = \u6587\u4EF6\u7C7B\u578B\u9519\u8BEF
struts.messages.error.uploading = \u4E0A\u4F20\u51FA\u73B0\u9519\u8BEF
#struts.messages.error.file.too.large = \u6587\u4EF6\u592A\u5927

struts.messages.error.file.too.large =\u4E0A\u4F20\u6587\u4EF6{1}\u8D85\u8FC7\u5141\u8BB8\u5927\u5C0F{3}
struts.messages.error.file.extension.not.allowed=\u4E0A\u4F20\u6587\u4EF6\u540D\u6269\u5C55\u540D\u4E0D\u7B26\u5408\u8981\u6C42

 struts.xml中注册使用

<constant name="struts.custom.i18n.resources" value="messages"></constant>  

 这种全局资源文件配置没有任何问题,但我在action的所在包中配置国际化文件却失败了

页面需要fielderror显示

	<s:fielderror></s:fielderror>
	<form action="${pageContext.request.contextPath}/demo01/upload1.action" method="post" enctype="multipart/form-data">
		<input type="file" name="upload"><br/> 
		<input type="submit">
	</form>

 也可以在struts.xml中配置全局常量,但这错误信息需要actionerror显示

	<constant name="struts.multipart.maxSize" value="200000000"></constant>

 3、多文件上传

jsp,上传文件的name属性一样

	<form action="${pageContext.request.contextPath}/demo01/upload2.action" method="post" enctype="multipart/form-data">
		<input type="file" name="upload"><br/> 
		<input type="file" name="upload"><br/> 
		<input type="file" name="upload"><br/> 
		<input type="submit">
	</form>

 Action,在Action中使用数组接受

public class UploadAction2 extends ActionSupport {
	private File[] upload;
	private String[] uploadContentType;
	private String[] uploadFileName;

	@Override
	public String execute() throws Exception {
		for (int i = 0; upload != null && i < upload.length; i++) {
			File sourFile = upload[i];
			File destFile = new File(ServletActionContext.getServletContext().getRealPath("/upload") + "/" + uploadFileName[i]);
			FileUtils.copyFile(sourFile, destFile);
		}
		return NONE;
	}

	public void setUpload(File[] upload) {
		this.upload = upload;
	}

	public void setUploadContentType(String[] uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public void setUploadFileName(String[] uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

}

 struts配置

<action name="upload2" class="demo01.UploadAction2">
			<result name="input">/demo01/upload2.jsp</result>
		</action>

 

 所有的上传在操作之前需要判断是否有文件上传,防止空文件上传

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Struts2 part 3:在Action中使用ServletAPI

    4. **文件上传和下载**:Struts2支持文件上传,而底层实现就是Servlet API中的`Part`接口和`ServletFileUpload`类。你可以通过Action直接处理文件上传请求,进行文件验证、存储等操作。 5. **Filter和Dispatcher**...

    struts2 实现文件批量上传

    1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...

    Struts2 单个、批量文件上传 精简源码

    Struts2提供了强大的文件上传支持,包括单个文件上传和批量文件上传。在这个精简源码案例中,我们将探讨这两种模式的实现方式。 首先,我们来了解一下Struts2单个文件上传的基本概念。在Struts2中,文件上传主要...

    Struts2文件上传源码

    6. **源码分析**: 要深入理解Struts2的文件上传机制,你需要查看Struts2的源码,特别是`org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest`和`org.apache.struts2.components.Form`这两个类。...

    struts2 简单的文件上传

    在Struts2框架下实现文件上传,需要理解以下几个核心概念和步骤: 1. **Action类**:在Struts2中,Action类是业务逻辑的载体。你需要创建一个继承自`org.apache.struts2.interceptor.FileUploadInterceptor`支持...

    Struts2之Servlet文件上传详解案例struts010

    本案例“Struts2之Servlet文件上传详解”将聚焦于如何使用Struts2框架配合Servlet实现文件上传功能。在Web应用中,文件上传是一个常见的需求,例如用户可能需要上传头像、附件等。 首先,我们来理解文件上传的基本...

    Struts2的文件上传下载.rar

    在Struts2中,文件上传和下载是常见的功能,对于处理用户通过表单提交的文件数据非常有用。这篇教程将带你了解如何在Struts2中实现文件上传和下载,并涉及到国际化(i18n)的应用。 1. **文件上传**: - **配置...

    Struts AJAX文件上传

    Struts AJAX 文件上传是一种在Java Web开发中实现异步数据传输的技术,它结合了Struts框架和AJAX(Asynchronous JavaScript and XML)的优势,提供了一种用户友好的、无刷新的文件上传方式。这种方式可以显著提升...

    Struts2文件的上传和下载

    Struts2提供了配置文件上传限制的方法,如在struts.properties或struts.xml中设置`struts.multipart.maxSize`。 总的来说,Struts2通过集成Apache Commons FileUpload简化了文件上传操作,使得开发者可以更专注于...

    struts2异步多文件上传和下载

    在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...

    struts2part2

    struts2part2,由于文件太大无法一次上传,分成两部分,请用文件合并工具进行合并。文件合并工具见本人资源。

    struts2文件上传

    Struts2文件上传是Java Web开发中常见的功能,主要用于处理用户通过表单提交的文件,如图片、文档等。在Struts2框架中,文件上传是通过特定的拦截器和配置来实现的。以下是关于Struts2文件上传的详细知识点: 1. **...

    通过Servlet文件上传理解Struts2文件上传原理(附源码)

    在本文中,我们将深入探讨如何使用Servlet来理解Struts2中的文件上传原理。Servlet是Java Web应用程序中的一个组件,用于处理HTTP请求和响应。而Struts2是一个基于MVC(模型-视图-控制器)设计模式的开源Web应用框架...

    struts2part1

    struts2.3.14part1,文件太大无法一次上传,分割成part1和part2,用文件合并工具进行合并即可。

    Struts2.0文件上传原理

    虽然Struts2框架本身提供了文件上传的支持,但开发者也可以选择使用第三方库,如Apache Commons FileUpload,它可以更方便地处理文件上传,提供更丰富的功能和更好的性能。 9. **源码分析** 对于深入理解Struts2...

    struts2多文件上传和下载

    在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。这篇内容将深入讲解如何在Struts2中实现多文件的上传和下载。 1. **文件上传** 文件上传在Web应用中常常用于让用户提交各种类型的文件...

    struts实现文件上传功能

    一、Struts2文件上传的基本原理 文件上传功能主要依赖于Java Servlet API中的Part接口,以及Apache Commons FileUpload库。Struts2通过拦截器机制,在请求处理阶段捕获上传的文件并将其存储到服务器的指定路径。它...

    struts2实现多文件同时上传

    2. **Struts2 Action**:创建一个继承自`ActionSupport`的类,该类将处理文件上传的逻辑。在这个类中,定义一个`List&lt;File&gt;`或`List&lt;CommonsMultipartFile&gt;`类型的字段,用于接收上传的文件。 3. **表单设计**:在...

    struts框架写的文件上传下载系统

    1. **文件上传**:用户登录后,可以使用系统提供的上传功能选择本地的文件,Struts框架通过Servlet API中的Part接口处理文件流,将文件从客户端传输到服务器的指定目录。此过程需要对文件大小、类型进行限制,以防止...

    flex struts2文件上传

    Flex Struts2文件上传是一个常见的Web开发任务,它涉及到客户端与服务器端的数据交互,特别是涉及用户界面和后端服务之间的文件传输。Flex是Adobe开发的一个富互联网应用(RIA)框架,用于创建动态、交互式的用户...

Global site tag (gtag.js) - Google Analytics