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>
所有的上传在操作之前需要判断是否有文件上传,防止空文件上传
相关推荐
4. **文件上传和下载**:Struts2支持文件上传,而底层实现就是Servlet API中的`Part`接口和`ServletFileUpload`类。你可以通过Action直接处理文件上传请求,进行文件验证、存储等操作。 5. **Filter和Dispatcher**...
1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...
Struts2提供了强大的文件上传支持,包括单个文件上传和批量文件上传。在这个精简源码案例中,我们将探讨这两种模式的实现方式。 首先,我们来了解一下Struts2单个文件上传的基本概念。在Struts2中,文件上传主要...
6. **源码分析**: 要深入理解Struts2的文件上传机制,你需要查看Struts2的源码,特别是`org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest`和`org.apache.struts2.components.Form`这两个类。...
在Struts2框架下实现文件上传,需要理解以下几个核心概念和步骤: 1. **Action类**:在Struts2中,Action类是业务逻辑的载体。你需要创建一个继承自`org.apache.struts2.interceptor.FileUploadInterceptor`支持...
本案例“Struts2之Servlet文件上传详解”将聚焦于如何使用Struts2框架配合Servlet实现文件上传功能。在Web应用中,文件上传是一个常见的需求,例如用户可能需要上传头像、附件等。 首先,我们来理解文件上传的基本...
在Struts2中,文件上传和下载是常见的功能,对于处理用户通过表单提交的文件数据非常有用。这篇教程将带你了解如何在Struts2中实现文件上传和下载,并涉及到国际化(i18n)的应用。 1. **文件上传**: - **配置...
Struts AJAX 文件上传是一种在Java Web开发中实现异步数据传输的技术,它结合了Struts框架和AJAX(Asynchronous JavaScript and XML)的优势,提供了一种用户友好的、无刷新的文件上传方式。这种方式可以显著提升...
Struts2提供了配置文件上传限制的方法,如在struts.properties或struts.xml中设置`struts.multipart.maxSize`。 总的来说,Struts2通过集成Apache Commons FileUpload简化了文件上传操作,使得开发者可以更专注于...
在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...
struts2part2,由于文件太大无法一次上传,分成两部分,请用文件合并工具进行合并。文件合并工具见本人资源。
Struts2文件上传是Java Web开发中常见的功能,主要用于处理用户通过表单提交的文件,如图片、文档等。在Struts2框架中,文件上传是通过特定的拦截器和配置来实现的。以下是关于Struts2文件上传的详细知识点: 1. **...
在本文中,我们将深入探讨如何使用Servlet来理解Struts2中的文件上传原理。Servlet是Java Web应用程序中的一个组件,用于处理HTTP请求和响应。而Struts2是一个基于MVC(模型-视图-控制器)设计模式的开源Web应用框架...
struts2.3.14part1,文件太大无法一次上传,分割成part1和part2,用文件合并工具进行合并即可。
虽然Struts2框架本身提供了文件上传的支持,但开发者也可以选择使用第三方库,如Apache Commons FileUpload,它可以更方便地处理文件上传,提供更丰富的功能和更好的性能。 9. **源码分析** 对于深入理解Struts2...
在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。这篇内容将深入讲解如何在Struts2中实现多文件的上传和下载。 1. **文件上传** 文件上传在Web应用中常常用于让用户提交各种类型的文件...
一、Struts2文件上传的基本原理 文件上传功能主要依赖于Java Servlet API中的Part接口,以及Apache Commons FileUpload库。Struts2通过拦截器机制,在请求处理阶段捕获上传的文件并将其存储到服务器的指定路径。它...
2. **Struts2 Action**:创建一个继承自`ActionSupport`的类,该类将处理文件上传的逻辑。在这个类中,定义一个`List<File>`或`List<CommonsMultipartFile>`类型的字段,用于接收上传的文件。 3. **表单设计**:在...
1. **文件上传**:用户登录后,可以使用系统提供的上传功能选择本地的文件,Struts框架通过Servlet API中的Part接口处理文件流,将文件从客户端传输到服务器的指定目录。此过程需要对文件大小、类型进行限制,以防止...
Flex Struts2文件上传是一个常见的Web开发任务,它涉及到客户端与服务器端的数据交互,特别是涉及用户界面和后端服务之间的文件传输。Flex是Adobe开发的一个富互联网应用(RIA)框架,用于创建动态、交互式的用户...