文件上传是网站中经常使用的。
文件上传的API也比较多,本人之前用过JSP smart upload的API,最有名的文件上传的API当属apache
commons-fileupload,struts2中文件上传就更简单了,下面是一个Struts2简单的文件上传的例子。
action类
private String username; private String password; private String secret; //上传的文件对象 private File uploadFile; //文件名称 private String uploadFileFileName; //文件类型 private String uploadFileContentType; //性别 private String sex; //爱好 private String[] hobby; //出生国家 private String country; //国籍 private String[] guoji; private String desc; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String submit(){ List<String> hobbys = new ArrayList<String>(); Collections.addAll(hobbys, hobby); List<String> guojis = new ArrayList<String>(); Collections.addAll(guojis, guoji); System.out.println("username="+username+",password="+password+",secret="+secret+",file="+uploadFile+",sex="+sex+",hobby="+hobbys+",country="+country+",guoji="+guojis+",desc="+desc); System.out.println("filename="+uploadFileFileName+",content type="+uploadFileContentType+",length="+uploadFile.length()); return SUCCESS; } setter and getter method
struts.xml,action配置没有什么特殊之处,文件上传的action要使用默认的拦截器栈,默认的拦截器栈
中有文件上传的拦截器
<!-- 允许上传的最大文件大小 --> <constant name="struts.multipart.maxSize" value="10485760"></constant> <package name="Struts2_ReceiveWebElement" namespace="/" extends="struts-default"> <action name="index" class="com.guchao.struts2.action.TestAction" method="submit"> <result>/hello.jsp</result> </action> </package>
JSP代码
<form action="index!submit" method="post" enctype="multipart/form-data"> username: <input type="text" name="username"> <br> password: <input type="password" name="password"> <br> <input type="hidden" name="secret" value="this is a secret!"> file:<input type="file" name="uploadFile"><br> sex:<input type="radio" name="sex" value="Male">M <input type="radio" name="sex" value="FMale">F<br> hobby:<input type="checkbox" name="hobby" value="Music" checked="checked">Music <input type="checkbox" name="hobby" value="Art">Art <input type="checkbox" name="hobby" value="Dance">Dance<br> birthday country:<select name="country"> <option value="China" selected="selected">China</option> <option value="USA">USA</option> <option value="Canada">Canada</option> <option value="Japan">Japan</option> </select><br> guoji:<select name="guoji" multiple="multiple"> <option value="China" selected="selected">China</option> <option value="USA">USA</option> <option value="Canada">Canada</option> <option value="Japan">Japan</option> </select><br> desc:<textarea rows="20" cols="20" name="desc"></textarea><br> <input type="button" name="btn" value="submit" onclick="javascript:document.forms[0].submit();"> </form>
文件上传页面需要注意的一点是表单form要设置为enctype="multipart/form-data",默认
为enctype="application/x-www-form-urlencoded"
Struts2之所以能够如此简单地进行文件上传,是因为有文件上传拦截器FileUploadInterceptor,action
中的属性uploadFileFileName和uploadFileContentType,是文件上传拦截器自动完成的赋值。格式为File对象的名称+FileName 和 File对象的名称+ContentType。
此外还可以看到表单中的参数和action属性的映射,单选按钮对应String,多选按钮对应String[],单选
的下拉列表对应String,多选的下拉列表对应String[]等。
相关推荐
这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...
1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`<result>`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
为了学习和实践Struts2的文件上传,你可以解压这个文件,查看其中的Action类、`struts.xml`配置文件,以及可能的JSP页面,以理解整个流程。 总结来说,Struts2的文件上传涉及到拦截器配置、Action类的编写以及...
Struts2 文件上传是Web开发中的一个重要功能,它允许用户通过网页上传文件到服务器。Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,提供了丰富的特性和强大的控制层功能,使得文件上传...
在文件上传场景中,Struts2主要负责接收前端发送的文件数据,并将这些数据存储到服务器的指定位置。配置Struts2的Action类和相应的XML配置文件,可以定义文件上传的处理逻辑。 接着,jQuery是一个高效、简洁的...
6. **源码分析**: 要深入理解Struts2的文件上传机制,你需要查看Struts2的源码,特别是`org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest`和`org.apache.struts2.components.Form`这两个类。...
总结,Struts2中的文件上传功能涉及到Action类的编写、配置文件的设定、JSP页面的构造、文件上传处理以及安全措施等多个方面。理解并熟练掌握这些知识点,能够帮助开发者在Struts2项目中有效地实现文件上传功能。
3. **创建Struts2 Action**:在Struts2框架中,创建一个处理文件上传的Action类,该类通常会包含一个`List<HttpServletFileWrapper>`类型的属性,用于接收上传的文件。 4. **编写Struts2配置**:在struts.xml配置...
文件上传功能在Struts2中通过`Struts2`提供的插件来实现,主要依赖于`Apache Commons FileUpload`库。首先,要在`struts.xml`配置文件中启用文件上传支持,设置`struts.multipart.parser`为`jakarta`或`native2...
在Struts2中实现文件上传是常见的需求,比如上传头像或文档。本篇文章将详细讲解如何利用Struts2框架来实现头像上传功能。 首先,我们需要在Struts2配置文件(struts.xml)中添加相关的action配置,以便处理文件...
4. **Commons FileUpload配置**:在Struts2配置文件中,我们需要配置Struts2与Apache Commons FileUpload的集成。这包括设置临时目录、最大文件大小等参数。 5. **文件处理**:在Action的execute()方法或其他业务...
在Struts2中,文件上传是常见的功能之一,特别是批量上传,可以处理用户一次性上传多个文件的需求。下面将详细介绍Struts2实现文件批量上传的相关知识点。 1. **Struts2的ActionContext与FileUpload插件** Struts2...
在本案例中,我们将探讨如何使用Struts2与Flash技术相结合实现文件的上传,并且展示上传进度条,提高用户体验。 1. **Struts2文件上传基础** - Struts2提供了一个名为`CommonsFileUploadInterceptor`的拦截器,它...
Struts2是一个强大的MVC框架,广泛应用于Java Web开发中,尤其在处理用户表单提交和文件上传等交互场景中表现出色。在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的...
在Struts2中,文件上传是通过`<s:file>`标签实现的,这个标签会创建一个`File`对象,与用户选择的文件对应。同时,Struts2提供了一个`FileUploadInterceptor`拦截器,用于处理文件上传的相关逻辑,包括验证文件大小...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...