首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-06-25 
利用Spring 组件 CommonsMultipartResolver控制上传文件大小jeecms框架中以有上传文件 但为了避免服务器端

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

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

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

根据需求,注入其属性

<!--限制文件上传2M内  --><bean id="multipartResolver" value="2097152"></property> </bean>

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

严重: Servlet.service() for servlet JeeCmsAdmin threw exceptionorg.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 组件 CommonsMultipartResolver统制上传文件大小
?

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

?

最终结果


利用Spring 组件 CommonsMultipartResolver统制上传文件大小
?这样通过读取配置文件的信息返回 既解决了后台抛异常问题前段又有返回信息。

?

热点排行