`
紫_色
  • 浏览: 144317 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Struts2上传图片

    博客分类:
  • J2EE
阅读更多

在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中并读取出来显示在页面上_好资源0分送

    ### 使用Struts2上传图片至MySQL数据库并读取显示 #### 概述 本文将详细介绍如何利用Struts2框架结合Spring和Hibernate技术栈实现图片的上传、存储至MySQL数据库以及从数据库读取并在Web页面展示的功能。整个过程...

    struts2 上传图片显示

    总的来说,使用Struts2上传图片并显示缩略图涉及多个步骤:配置Struts2 Action,处理文件上传,生成缩略图,以及在页面上展示图片。这个过程需要对Struts2框架、文件I/O、图片处理以及Web安全有深入理解。通过实践,...

    struts2图片上传并预览

    Struts2提供了一套完善的机制来处理文件上传,包括图片。本文将详细讲解如何利用Struts2实现图片上传并进行预览。 一、Struts2文件上传基础 1. 添加依赖:在项目中,你需要添加Struts2的核心库和文件上传插件。...

    ckeditor+struts2上传图片

    在Struts2中,我们可以使用`CommonsFileUpload`库来处理文件上传,该库能够解析HTTP请求中的多部分数据,将图片文件从客户端传输到服务器端。 实现CKEditor图片上传到Struts2的步骤大致如下: 1. **配置CKEditor**...

    xheditor集成struts2上传图片

    本案例涉及的是将xheditor富文本编辑器与Struts2框架整合,实现图片上传功能。xheditor是一款强大的JavaScript在线编辑器,提供了丰富的文本编辑功能,而Struts2是一个流行的Java Web框架,用于构建MVC(模型-视图-...

    struts2上传图片

    在"struts2上传图片"这个场景下,我们将深入探讨如何在Struts2框架下实现用户上传图片的功能,并关注网站统计访问量以及防止重复提交的问题。 首先,上传图片是Web应用中常见的功能,它涉及到前端表单设计、后端...

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    struts2上传图片到Oracle

    在"struts2上传图片到Oracle"这个场景中,我们将探讨如何使用Struts2框架实现文件上传,以及如何将这些上传的图片存储到Oracle数据库中。 首先,让我们了解文件上传的基本流程。在Struts2中,我们通常会创建一个...

    ssh框架用struts2 hibernate实现图片的上传源码

    本项目涉及的核心知识点是使用Struts2处理表单提交,Hibernate进行数据持久化,以及图片上传的相关技术。下面将详细介绍这些内容。 1. **Struts2**:Struts2是一个基于MVC设计模式的Web应用框架,它通过拦截器模型...

    Struts2上传图片存数据库

    总结起来,"Struts2上传图片存数据库"涉及到的关键技术包括Struts2的文件上传处理、Hibernate的BLOB类型操作、数据库交互以及安全控制。通过这个案例,开发者可以学习到如何将Web应用中的文件操作与数据库存储相结合...

    struts实现上传图片

    本文将深入探讨如何使用Struts框架实现图片上传功能,这在许多Web应用中都是一个常见且重要的需求。 ### Struts框架简介 Struts是一个开源的框架,用于创建企业级的Java Web应用。它基于Servlet和JSP技术,并遵循...

    struts2上传视频照片

    在Struts2中实现视频和照片上传功能是一项常见的需求,这通常涉及到文件上传、文件处理以及数据展示等多个环节。以下将详细介绍如何在Struts2中实现视频和照片的上传,并在后端页面显示。 1. **文件上传基础**: -...

    Struts2上传图片并生成等比例缩略图的实例

    在Struts2框架中,实现图片上传并生成等比例缩略图是一项常见的需求,尤其在构建Web应用时。本实例将向你展示如何利用Struts...通过这样的实现,用户不仅可以上传图片,还可以快速预览等比例的缩略图,提高了用户体验。

    CKEditor实现图片上传(使用Struts2)

    例如,我们可以在`config.js`中添加以下代码来开启上传图片的插件: ```javascript config.filebrowserImageUploadUrl = '/struts/ckupload.action'; ``` 这里,`/struts/ckupload.action`是Struts2的Action路径,...

    struts2 批量上传 图片+文件

    在这个场景中,我们讨论的是如何在Struts2中实现图片和文件的批量上传,并且在上传过程中显示进度条。 批量上传是指用户可以一次性选择多个文件进行上传,而不仅仅是一个文件。这通常需要前端界面支持多选文件的...

    Extjs4文件上传,后台struts2

    在本文中,我们将深入探讨如何使用ExtJS 4与Struts2框架实现文件上传功能。ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件,而Struts2是Java Web开发中的一个MVC框架,用于处理后端业务逻辑。下面,我们...

    简单使用注解的方式struts2的图片上传

    在本文中,我们将深入探讨Struts2的注解使用、图片上传流程以及相关的Java配置。 1. **Struts2注解的使用** 在Struts2中,我们可以使用注解来简化Action类的配置。例如,`@Action`注解用于标记一个方法为处理特定...

    struts2+jquery+ajax文件异步上传

    在Struts2的配置文件中,我们可以定义这些规则,例如限制上传文件的大小,只接受特定类型的文件(如图片、文档等)。此外,我们还需要关注安全问题,防止恶意文件上传。 文件上传的实现通常包括以下几个步骤: 1. ...

    struts2上传图片源码

    在这个"struts2上传图片源码"中,我们可以深入理解Struts2如何处理文件上传操作,这在现代Web应用中是非常常见的需求。 1. **JSP代码**: JSP(JavaServer Pages)是用于创建动态网页的Java技术。在文件上传场景中...

    struts2上传下载项目

    在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...

Global site tag (gtag.js) - Google Analytics