`

利用Spring 组件 CommonsMultipartResolver控制上传文件大小

 
阅读更多

jeecms框架中以有上传文件 但为了避免服务器端的压力有必要控制文件大小在2M以内才允许上传

Jeecms 框架由SpringMVC +Hibernate +freemarker组成 Spring提供org.springframework.web.multipart.commons.CommonsMultipartResolver组件针对文件上传操作

根据需求,注入其属性

	<!--限制文件上传2M内  -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="2097152"></property> 
	</bean>

 

 当然文件大小控制住在2M内 点击上传后CommonsMultipartResolver直接过滤掉,页面没有相应提示信息,后台出现的错误并没有处理

严重: Servlet.service() for servlet JeeCmsAdmin threw exception
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (2152078) exceeds the configured maximum (2097152)
	at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:914)
	at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:349)
	at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:155)
	at org.springframework.web.multipart.commons.CommonsMultipartResolver.resolveMultipart(CommonsMultipartResolver.java:138)

 那么如何更友好 的返回错误信息

在后台找到上传的控制器在获取字节时候控制住大小

private WebErrors validate(String filename, MultipartFile file,
			HttpServletRequest request) {
		WebErrors errors = WebErrors.create(request);
		if (file == null) {
			errors.addErrorCode("imageupload.error.noFileToUpload");
			return errors;
		}
		//限制上传文件2M内
		if(file.getSize()>2097152)
		{
			errors.addError("imageupload.error.maxSize");
			return errors;
		}
		if (StringUtils.isBlank(filename)) {
			filename = file.getOriginalFilename();
		}
		String ext = FilenameUtils.getExtension(filename);
		if (!ImageUtils.isValidImageExt(ext)) {
			errors.addErrorCode("imageupload.error.notSupportExt", ext);
			return errors;
		}
		try {
			if (!ImageUtils.isImage(file.getInputStream())) {
				errors.addErrorCode("imageupload.error.notImage", ext);
				return errors;
			}
		} catch (IOException e) {
			log.error("image upload error", e);
			errors.addErrorCode("imageupload.error.ioError", ext);
			return errors;
		}
		return errors;
	}

 addError方法去读配置文件信息



 

最后把spring 配置中 的限制注释掉

 

最终结果



 这样通过读取配置文件的信息返回 既解决了后台抛异常问题前段又有返回信息。

 

  • 大小: 128.6 KB
  • 大小: 80 KB
  • 大小: 136.6 KB
分享到:
评论
1 楼 yo8237233 2014-11-08  
楼主,请问这个上传异常在请求进去控制器之前就已经被spring拦截报错了,你是怎么进去validate这个错误处理方法里面的呢

相关推荐

    Spring MVC 文件上传下载 后端 - Java.zip

    - **验证与存储**:在处理文件上传时,通常需要验证文件大小、类型等,并将其安全地存储在服务器上。这可能涉及到文件重命名、存储路径管理以及异常处理。 3. **文件下载**: - **HttpServletResponse**:在...

    spring mvc 上传文件显示进度

    考虑到安全性,应限制上传文件的大小和类型,防止DoS攻击。同时,对于大型文件,可以考虑分块上传,以减轻服务器压力。 通过以上步骤,我们可以在Spring MVC中实现文件上传并显示进度。这个功能可以显著提高用户...

    Spring Multipart工作原理(文件上传到服务器)

    不过,这只是一个基本的保存操作,实际应用中可能需要处理文件重命名、异常处理、文件大小限制等问题。 此外,PictureUtils.java可能是用于处理图片或文件的工具类,它可能会包含一些关于图片转换、缩放、格式转换...

    spring基于注解的上传

    自定义MultipartResolver可以控制文件大小限制、文件类型过滤等行为。例如,我们可以创建一个自定义的`MultipartResolver`实现,并在Spring配置中指定: ```java @Bean public CommonsMultipartResolver multipart...

    java spring +flex实现文件上传

    -- 设定最大上传文件大小,单位为MB --&gt; ``` 2. **Controller 接口** 创建一个Spring MVC控制器,定义一个处理文件上传的接口。使用`@RequestParam("file") MultipartFile file`来接收上传的文件,例如: `...

    Spring2.5MVC--基于注解的附件上传

    在这个博客中,作者可能还会详细介绍如何处理文件上传可能出现的异常,如文件大小超出限制、文件类型验证等。同时,可能会提供完整的示例代码,包括前端和后端的完整配置,以及如何在实际项目中整合这些配置。 总之...

    Spring Boot 文件上传原理解析

    但在Spring Boot中,这些配置已经自动完成,只需在`application.properties`中进行调整以满足实际需求,如设置上传目录、最大文件大小和请求大小: ```properties # multipart config spring....

    Spring下的子框架SpringMVC实现多文件上传完整代码

    此配置设置了文件解析器的最大上传文件大小限制,有助于防止恶意上传过大文件导致的问题。 通过以上技术要点和实践示例的介绍,我们可以看到 SpringMVC 在处理多文件上传方面不仅提供了丰富的功能支持,而且通过...

    spring MVC 上传 &下载

    3. **异常处理**:当上传的文件大小超过了配置的最大值时,Spring MVC会抛出`MaxUploadSizeExceededException`异常。可以通过配置异常处理器来处理这种情况,并跳转到特定的错误页面。 ```xml ...

    基于SSM文件的上传和下载

    在`web.xml`中配置`MultipartResolver`,并设置允许的最大文件大小和总上传大小。 2. **编写Controller**:创建一个SpringMVC控制器,定义一个处理文件上传的接口,例如`@PostMapping("/upload")`,接收`...

    springMVC文件上传demo(亲测有效)

    -- 设置最大上传文件大小,单位为MB --&gt; ``` 其中,`maxUploadSize`属性用来限制上传文件的大小,防止过大文件导致服务器资源耗尽。 3. **前端表单** 在HTML页面中,创建一个`&lt;form&gt;`元素,并设置`enctype=...

    ssh框架单文件与多文件上传

    在文件上传后,如果需要将文件信息存储到数据库,可以利用Hibernate的ORM能力,创建对应的实体类和映射文件,将文件名、大小、上传时间等信息保存到数据库。 **文件上传步骤**: 1. **前端表单**:创建HTML表单,...

    springmvc文件上传jar

    综上所述,"springmvc文件上传jar"是用于处理Spring MVC环境中文件上传功能的一个依赖包,它结合了Apache Commons的两个关键组件,使得在服务器端处理文件上传变得简单而高效。在实际应用中,开发者需要理解这些库的...

    ssh上传下载文件到oracle

    开发者需要配置一个`CommonsMultipartResolver`解析器来启用文件上传功能,并在控制器层处理`MultipartFile`对象,将文件内容存储到Oracle数据库中。 其次,**Struts2**是一个基于MVC设计模式的Action驱动的Web框架...

    springboot-fileupload-master.zip

    在Spring Boot中,我们可以利用Spring MVC的MultipartResolver接口和MultipartFile类来处理文件上传。 1. **MultipartFile**: 这是Spring MVC提供的一个接口,用于封装HTTP请求中的多部分数据,即文件和表单数据。...

    SpringMVC文件上传下载分页拦截器

    4. **异常处理**: 文件上传过程中可能出现大小超出限制、文件类型不合法等问题,需要设置合理的限制并捕获异常,返回相应的错误信息。 **文件下载** 1. ** ResponseEntity**: Spring MVC中的`ResponseEntity`可以...

    文件上传demo

    要启用文件上传,我们需要在Spring配置文件中配置这个解析器,并设置允许的最大上传大小。例如: ```xml &lt;bean id="multipartResolver" class="org.springframework.web.multipart.commons....

    spring MVC uploadify

    在本文中,我们将深入探讨如何利用Spring MVC的`multipartResolver`与第三方库uploadify协同工作,实现图片文件的上传和预览功能。 首先,`multipartResolver`是Spring MVC用来解析multipart请求的接口。默认情况下...

    springMVC文件上传所需jar包

    在Java Web开发中,SpringMVC是一个非常流行的MVC框架,它提供了强大的功能来构建复杂的Web应用程序。...在实际项目中,还需要注意文件大小限制、错误处理、文件存储位置等细节,以提供健壮的文件上传服务。

    java-springmvc图片上传

    综上所述,"java-springmvc图片上传"项目展示了如何利用Spring MVC框架实现一个简单的图片上传功能,涉及到了Spring MVC的基本结构、文件上传处理、控制器设计、视图渲染、配置以及安全性方面的考量。理解这些知识点...

Global site tag (gtag.js) - Google Analytics