在Struts2中为我们提供了比较简单的文件上传方式.
首先引入commons-fileupload-x.jar、commons-io-x.jar 这两个jar包,然后引入Struts2相关jar包
接下来新建一个jsp文件:写一个文件上传表单,这里需要特别注意要在form加上enctype="multipart/form-data" method="post" .
<form action="/admin/center/brandAction!addBrandProcess" enctype="multipart/form-data" method="post"> <table width="90%" border="0" cellspacing="2" cellpadding="3" align="center"> <tr bgcolor="f5f5f5"> <td width="22%"> <div align="right">图片:</div> </td> <td width="78%"><input type="file" name="uploadFile" /> </td> </tr> <tr bgcolor="f5f5f5"> <td colspan="2"> <div align="center"> <input type="submit" value=" 确 定 "> </div> </td> </tr> </table> </form>
下一步:添加我们的Action类:
package gd.hz.shopping.action; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.opensymphony.xwork2.ActionSupport; @Controller("brandAction") @Scope("prototype") public class Test extends ActionSupport { private static final long serialVersionUID = 1L; //此属性对应于表单中文件字段的名称 private File uploadFile; //下面的这两个属性的命名必须遵守上定的规则,即为"表单中文件字段的名称" + "相应的后缀" private String uploadFileContentType; // 得到上传的文件的数据类型, private String uploadFileFileName; // 得到上传的文件的名称 public File getUploadFile() { return uploadFile; } public void setUploadFile(File uploadFile) { this.uploadFile = uploadFile; } public String getUploadFileContentType() { return uploadFileContentType; } public void setUploadFileContentType(String uploadFileContentType) { this.uploadFileContentType = uploadFileContentType; } public String getUploadFileFileName() { return uploadFileFileName; } public void setUploadFileFileName(String uploadFileFileName) { this.uploadFileFileName = uploadFileFileName; } public String addBrandProcess() throws IOException { String realPath = ServletActionContext.getServletContext().getRealPath("/images"); SimpleDateFormat date = new SimpleDateFormat("/yyyy/MM/dd"); String dateTime = date.format(new Date()); realPath += dateTime; uploadFileFileName = UUID.randomUUID().toString() + uploadFileFileName.substring(uploadFileFileName.lastIndexOf('.')); System.out.println(uploadFileContentType); //控制图片类型 if(uploadFileContentType.equals("image/gif") || uploadFileContentType.equals("image/jpeg") || uploadFileContentType.equals("image/png") || uploadFileContentType.equals("image/bmp") || uploadFileContentType.equals("image/x-icon") || uploadFileContentType.equals("image/pjpeg")) { //判断文件是否为空,并且文件不能大于2M if(uploadFile != null && uploadFile.length() < 2097152) { //根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 File filePath = new File(new File(realPath), uploadFileFileName); //判断路径是否存在 if(!filePath.getParentFile().exists()) { //如果不存在,则递归创建此路径 filePath.getParentFile().mkdirs(); } System.out.println(uploadFileFileName); System.out.println(filePath.getParentFile()); //将文件保存到硬盘上,Struts2会帮我们自动删除临时文件 try { FileUtils.copyFile(uploadFile, filePath); } catch (IOException e) { System.out.println("图片上传失败"); e.printStackTrace(); } } } return "success"; } }
上面还是要遵守约定大于配置,注意名称的命名,uploadFileContentType和uploadFileFileName必须遵守Struts2的规则.
Struts2默认文件的上传大小是2M,当大于2M时会抛出异常,这里我们可以在struts.xml文件里做如下配置,控制上传文件的大小:
<struts> <constant name="struts.multipart.maxSize" value="10485761"/> </struts>
相关推荐
### 使用Struts2上传图片至MySQL数据库并读取显示 #### 概述 本文将详细介绍如何利用Struts2框架结合Spring和Hibernate技术栈实现图片的上传、存储至MySQL数据库以及从数据库读取并在Web页面展示的功能。整个过程...
总的来说,使用Struts2上传图片并显示缩略图涉及多个步骤:配置Struts2 Action,处理文件上传,生成缩略图,以及在页面上展示图片。这个过程需要对Struts2框架、文件I/O、图片处理以及Web安全有深入理解。通过实践,...
Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。...
在Struts2中,我们可以使用`CommonsFileUpload`库来处理文件上传,该库能够解析HTTP请求中的多部分数据,将图片文件从客户端传输到服务器端。 实现CKEditor图片上传到Struts2的步骤大致如下: 1. **配置CKEditor**...
本案例涉及的是将xheditor富文本编辑器与Struts2框架整合,实现图片上传功能。xheditor是一款强大的JavaScript在线编辑器,提供了丰富的文本编辑功能,而Struts2是一个流行的Java Web框架,用于构建MVC(模型-视图-...
在"struts2上传图片"这个场景下,我们将深入探讨如何在Struts2框架下实现用户上传图片的功能,并关注网站统计访问量以及防止重复提交的问题。 首先,上传图片是Web应用中常见的功能,它涉及到前端表单设计、后端...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。
在"struts2上传图片到Oracle"这个场景中,我们将探讨如何使用Struts2框架实现文件上传,以及如何将这些上传的图片存储到Oracle数据库中。 首先,让我们了解文件上传的基本流程。在Struts2中,我们通常会创建一个...
本项目涉及的核心知识点是使用Struts2处理表单提交,Hibernate进行数据持久化,以及图片上传的相关技术。下面将详细介绍这些内容。 1. **Struts2**:Struts2是一个基于MVC设计模式的Web应用框架,它通过拦截器模型...
总结起来,"Struts2上传图片存数据库"涉及到的关键技术包括Struts2的文件上传处理、Hibernate的BLOB类型操作、数据库交互以及安全控制。通过这个案例,开发者可以学习到如何将Web应用中的文件操作与数据库存储相结合...
本文将深入探讨如何使用Struts框架实现图片上传功能,这在许多Web应用中都是一个常见且重要的需求。 ### Struts框架简介 Struts是一个开源的框架,用于创建企业级的Java Web应用。它基于Servlet和JSP技术,并遵循...
在Struts2中实现视频和照片上传功能是一项常见的需求,这通常涉及到文件上传、文件处理以及数据展示等多个环节。以下将详细介绍如何在Struts2中实现视频和照片的上传,并在后端页面显示。 1. **文件上传基础**: -...
在Struts2框架中,实现图片上传并生成等比例缩略图是一项常见的需求,尤其在构建Web应用时。本实例将向你展示如何利用Struts...通过这样的实现,用户不仅可以上传图片,还可以快速预览等比例的缩略图,提高了用户体验。
例如,我们可以在`config.js`中添加以下代码来开启上传图片的插件: ```javascript config.filebrowserImageUploadUrl = '/struts/ckupload.action'; ``` 这里,`/struts/ckupload.action`是Struts2的Action路径,...
在这个场景中,我们讨论的是如何在Struts2中实现图片和文件的批量上传,并且在上传过程中显示进度条。 批量上传是指用户可以一次性选择多个文件进行上传,而不仅仅是一个文件。这通常需要前端界面支持多选文件的...
在本文中,我们将深入探讨如何使用ExtJS 4与Struts2框架实现文件上传功能。ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件,而Struts2是Java Web开发中的一个MVC框架,用于处理后端业务逻辑。下面,我们...
在本文中,我们将深入探讨Struts2的注解使用、图片上传流程以及相关的Java配置。 1. **Struts2注解的使用** 在Struts2中,我们可以使用注解来简化Action类的配置。例如,`@Action`注解用于标记一个方法为处理特定...
在Struts2的配置文件中,我们可以定义这些规则,例如限制上传文件的大小,只接受特定类型的文件(如图片、文档等)。此外,我们还需要关注安全问题,防止恶意文件上传。 文件上传的实现通常包括以下几个步骤: 1. ...
在这个"struts2上传图片源码"中,我们可以深入理解Struts2如何处理文件上传操作,这在现代Web应用中是非常常见的需求。 1. **JSP代码**: JSP(JavaServer Pages)是用于创建动态网页的Java技术。在文件上传场景中...
在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...