- 浏览: 276134 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
han2000lei:
问题已解决,见下面代码<pre name="c ...
一个关于struts2上传文件超过限制大小如何提示的问题 -
liuxuejin:
你好,我想请教你一个问题,我们打算开发一个BS架构的卖家服务应 ...
淘宝API开发ISV订购页面必看 -
andey007518:
properties文件直接放到src路径下,
Propert ...
java读取properties配置文件 -
dove19900520:
朋友,你这个支持群发吗?为什么我按照你的写法来了改了一下,做成 ...
javamail发送邮件 -
emengbingkuai:
终于找到了
javascript中获取某月的天数
问题描述:
在使用struts2中上传文件时,在框架中本身给我们设置了一个限制大小。如果上传的文件超过这个大小,在拦截器中就返回了,并且这个错误提示是系统内置的,放在Action级别的Error当中。这个错误非常不友好,需要我们自己替换掉。下面的代码做到了,但出现了一个问题,看看哪位能够解决掉?
1、首先先说如何解决掉系统内置的ActionError,就是重写addActionError方法(见下面代码中)。
2、下面,问题出现了:我有一个验证方法,防止所有内容为空的验证,方法名见下面代码中validateAuthImgUpload方法(这是一个多动作控制器的验证),在这个方法当中判断页面的内容为空时,添加一个addActionError信息。这时,按上面的前提,文件上传时超出了系统的大小限制,拦截器拦截之后,将我修改的后的友好的提示放了进去,同时,它还将所有的提交的页面的内容置空了。然后又添加了validateAuthImgUpload方法的ActionError进去(这个地方我不明白,为什么validateAuthImgUpload方法能够执行,拦截中有错误了,按说是不执行了才对,但它的确是将这个方法当中的错误信息放进了ActionError当中),这时加上第一个错误,就有两个错误了,在页面一下子就显示出两个错误提示给用户,这种提示是不对的,哪位大侠能帮忙解决?
在使用struts2中上传文件时,在框架中本身给我们设置了一个限制大小。如果上传的文件超过这个大小,在拦截器中就返回了,并且这个错误提示是系统内置的,放在Action级别的Error当中。这个错误非常不友好,需要我们自己替换掉。下面的代码做到了,但出现了一个问题,看看哪位能够解决掉?
1、首先先说如何解决掉系统内置的ActionError,就是重写addActionError方法(见下面代码中)。
2、下面,问题出现了:我有一个验证方法,防止所有内容为空的验证,方法名见下面代码中validateAuthImgUpload方法(这是一个多动作控制器的验证),在这个方法当中判断页面的内容为空时,添加一个addActionError信息。这时,按上面的前提,文件上传时超出了系统的大小限制,拦截器拦截之后,将我修改的后的友好的提示放了进去,同时,它还将所有的提交的页面的内容置空了。然后又添加了validateAuthImgUpload方法的ActionError进去(这个地方我不明白,为什么validateAuthImgUpload方法能够执行,拦截中有错误了,按说是不执行了才对,但它的确是将这个方法当中的错误信息放进了ActionError当中),这时加上第一个错误,就有两个错误了,在页面一下子就显示出两个错误提示给用户,这种提示是不对的,哪位大侠能帮忙解决?
package com.test.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.FileCopyUtils; import com.test.service.impl.PicUpLoadImpl; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class PicUpAction extends ActionSupport { Logger logger = LoggerFactory.getLogger(PicUpAction.class); private PicUpLoadImpl picUpLoad; private String picName; private File pic; private String picFileName; private String picContentType; public void setPicUpLoad(PicUpLoadImpl picUpLoad) { this.picUpLoad = picUpLoad; } public String getPicName() { return picName; } public void setPicName(String picName) { this.picName = picName; } public File getPic() { return pic; } public void setPic(File pic) { this.pic = pic; } public String getPicFileName() { return picFileName; } public void setPicFileName(String picFileName) { this.picFileName = picFileName; } public String getpicContentType() { return picContentType; } public void setpicContentType(String picContentType) { this.picContentType = picContentType; } /* * 上传验证码图片 * @param */ public String authImgUpload() { InputStream picStream; byte[] byt = new byte[0]; try { picStream = new FileInputStream(pic); byt = FileCopyUtils.copyToByteArray(picStream); picStream.close(); if(byt.length>1048576){ this.clearActionErrors(); this.addActionError("上传图片超过1M大小限制"); return "input"; } } catch (FileNotFoundException e1) { this.clearActionErrors(); this.addActionError("上传文件没有找到,正确选择文件"); logger.error("上传的文件没有找到"+e1.getMessage()); } catch (IOException e) { this.clearActionErrors(); this.addActionError("IO Exception"); logger.error("上传文件读取错误"+e.getMessage()); } int flag = this.picUpLoad.upload("", picName, byt); if(flag==1){ return "authimgupok"; }else{ return ActionSupport.INPUT; } } public void validateAuthImgUpload() {//validate()验证方法 if("".equals(picName)|| picName==null||pic == null){//验证不能为空 // this.clearActionErrors();//这个地方清也不对,不清也不对 this.addActionError("请输入图片名称并选择上传文件"); }else{ String fileName = this.getPicFileName();//取到文件名 int index = fileName.indexOf(".");//找到点号,准备取后缀名 String fix = fileName.substring(index+1); if(!("jpg".equals(fix)||"png".equals(fix)||"bmp".equals(fix)||"gif".equals(fix))){ this.clearActionErrors(); this.addActionError("图片只能是 gif/jpg/png/bmp 格式"); } } } @Override public void addActionError(String anErrorMessage) {//这个是重写的addActionError的方法,去掉系统的提示,使用自已的 if(anErrorMessage.startsWith("Request exceeded allowed size limit")){ super.addActionError("上传图片超过1M大小限制"); }else{ super.addActionError(anErrorMessage); } } }
评论
1 楼
han2000lei
2015-07-20
问题已解决,见下面代码
public void validateAuthImgUpload() { if("".equals(picName)|| picName==null||pic == null){//验证不能为空 if(!this.hasActionErrors()){]//加入判断,如果不为空,说明拦截器当中有错误了,就不再执行这部分,这部分就显示不出来了 this.addActionError("请输入图片名称并选择上传文件"); } }else{ String fileName = this.getPicFileName();//取到文件名 int index = fileName.indexOf(".");//找到点号,准备取后缀名 String fix = fileName.substring(index+1); if(!("jpg".equals(fix)||"png".equals(fix)||"bmp".equals(fix)||"gif".equals(fix))){ this.clearActionErrors(); this.addActionError("图片只能是 gif/jpg/png/bmp 格式"); } } }
发表评论
-
Spring
2015-04-09 13:30 0spring与mybatis整合地址: http://w ... -
json的介绍(三)----json在java的使用
2012-12-05 14:20 1375在java中,常使用JSON-LIB,首先要有几个支持的包 j ... -
MyEclipse6.0 MyEclise9.0插件版下载合集
2012-11-21 17:03 2498本人制作了MyEclispse6.0及MyEclispse9. ... -
MyEclipse想说爱你不容易(写于2012-11-18)
2012-11-19 11:20 9605对于java的开发人员人来,eclipse与MyE ... -
MyEclipse 8.5 M1 下载合集-包含window,linux,Mac版
2011-01-30 22:15 6008MyEclipse 8.0GA发布后,MyEclipse官方并 ... -
MyEclipse 8.0 GA 下载合集-包含window,linux,Mac版
2011-01-30 22:13 2203MyEclipse官方放出了最新版本的MyEclipse 8 ... -
ajax在ie与firfox的乱码解决
2009-07-17 17:56 1786今天做网站时,使用ajax,传入action的编码,在ie中传 ... -
java.util.Date与java.util.Calendar
2009-07-15 17:01 0究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我 ... -
eclipse中编码设置
2009-06-03 20:35 3332在使用eclipse+MyEclipse开 ... -
java读取properties配置文件
2009-05-01 20:01 77902今天要将以前一个项目的数据连接改成从properties文件中 ... -
解决Netbeans导入文件乱码问题
2009-04-28 23:25 20251.找到你的Netbeans安装目录下的etc文件夹,如C:\ ... -
首页数据加载
2009-04-27 03:19 11361、配置web.xml。欢迎页面为随便的一页面,不要配置为in ... -
netbeans快捷键
2009-04-26 23:53 2261最近使用netbeans,发现还 ... -
myeclipse7.0插件安装
2009-04-21 11:22 4304最近用的myeclipse7.1,需要安装一些插件,于 ... -
大幅优化myeclipse的速度
2009-04-19 11:07 47731、去除不需要加载的模块 一个系统20%的功能往往能够满 ... -
log4j中使用相对路径
2009-04-11 11:25 4648很多朋友想把日志写在web应用当中,下面来介绍一下: log4 ... -
JavaMail的编码问题
2009-03-25 16:17 1940在使用javamail api开发邮件服务系统时,我们常常会碰 ... -
javamail发送邮件
2009-03-21 16:55 10808今天学习了一下JavaMail,javamail发送邮件确实是 ... -
Helma中的Filter
2009-02-16 09:07 0<div class="iteye-blog- ... -
json的介绍(一)----json的格式
2009-01-12 13:21 2159要使用json来传输数据,必须将所承载的数据转换成j ...
相关推荐
- Struts 2提供了一个名为`Struts2-FileUpload-plugin`的插件,它可以方便地处理文件上传,并且支持自定义文件大小限制。 5. **安全考虑**: - 不限制文件大小可能会导致DoS攻击,因此,即使服务器和容器未设定...
然而,文件上传功能也涉及到一个重要的问题,那就是大小限制。在实际应用中,为了防止恶意用户上传大文件导致服务器资源耗尽,或者保护服务器免受DoS攻击,通常会设定文件上传的大小限制。 这篇博客“Struts2文件...
在Struts2框架中,处理文件上传是一项常见且重要的功能,尤其当涉及到大文件上传时,往往会遇到上传文件大小超过预设限制的问题。这不仅影响用户体验,还可能导致应用程序出现异常或错误。本文将深入探讨如何解决...
如果上传文件大小超过这个限制,Struts会抛出`MaxUploadSizeExceededException`异常。 2. Spring框架中的文件上传: Spring提供了`CommonsMultipartFile`类来处理文件上传,它是基于Apache Commons FileUpload库的...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。文件上传和下载是Web应用程序中的常见功能,对于用户交互和数据交换至关重要。本篇文章将详细探讨如何在Struts2框架下实现文件的上传与...
如果上传的文件超过这个限制,Struts2会抛出一个`FileSizeLimitExceededException`异常。 2. **拦截器配置**: 拦截器是Struts2处理请求的重要组成部分,它们在Action执行之前和之后运行。`FileUploadInterceptor`...
Struts2是一个强大的Java web应用程序开发框架,它提供了一种模型-视图-控制器(MVC)架构,帮助开发者组织和构建高效的、可扩展的Web应用。在这个“struts2上传文件源代码”中,我们将深入探讨Struts2如何实现文件...
Struts2是一个非常流行的Java Web框架,用于构建企业级应用。它的强大之处在于提供了一种模型-视图-控制器(MVC)架构,使得开发者能够更有效地管理应用程序的业务逻辑、用户界面和数据流。在Struts2中,文件上传和...
1. **配置Struts2 Action**:在Struts2中,我们需要创建一个Action类来处理文件上传请求。这个类通常需要实现`ServletRequestAware`接口,以便可以直接访问HttpServletRequest对象,从中获取上传文件。 2. **添加...
Struts是Apache软件基金会的一个开源项目,主要是一个用于构建企业级Java Web应用程序的MVC(Model-View-Controller)框架。在Struts中处理文件上传功能时,有时我们需要对上传的文件大小进行限制,以防止恶意用户...
默认情况下,这个拦截器可能会限制上传文件的类型为`.txt`,并且大小不超过10MB。这种限制是为了防止恶意用户上传大文件或者非文本文件,从而可能对服务器造成压力或引入安全风险。 配置文件`struts.xml`中关于文件...
Struts2 是一个非常流行的Java Web开发框架,它提供了一种强大的MVC(Model-View-Controller)架构来构建企业级应用。在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人照片、文档等。然而,为了...
3. **文件大小限制**:设定上传文件的大小上限,防止DoS攻击。 4. **权限控制**:确保只有授权用户可以访问上传的文件。 **五、优化与扩展** 为了进一步优化用户体验,可以考虑以下方面: 1. **错误处理**:提供...
在Struts2的配置文件中,我们可以定义这些规则,例如限制上传文件的大小,只接受特定类型的文件(如图片、文档等)。此外,我们还需要关注安全问题,防止恶意文件上传。 文件上传的实现通常包括以下几个步骤: 1. ...
同时,我们还需要配置`struts.multipart.saveDir`属性,指定临时文件保存的位置,以及`struts.multipart.maxSize`,限制上传文件的最大大小。 在视图层,通常会有一个HTML表单,使用`enctype="multipart/form-data...
在使用Struts2进行文件上传时,可能会遇到一个常见的问题,即上传后的文件大小与原始文件大小不一致,甚至出现文件大小变大的情况。这个问题通常是由于处理文件输入流和输出流的方式不当导致的。让我们深入探讨一下...
Struts2是一个流行的Java Web框架,它为开发者提供了一种优雅的方式来构建可维护、可扩展且结构清晰的Web应用程序。在Struts2中,文件上传是常见的功能之一,尤其是在处理用户提交表单时,比如上传图片、文档等。...
在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。本文将详细讲解Struts2框架下三种不同的文件上传方式:copy模式、字节流上传和字符流上传。 1. Copy模式文件上传: Copy模式是...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。文件上传功能是Web应用中常见的需求,例如用户上传图片、文档等。在Struts2框架下实现文件上传,主要涉及到以下几个核心概念和技术点:...
在Action类中,你需要定义一个或多个属性来接收上传的文件,并设置相应的注解来告知Struts2如何处理它们。 在Action类中,你可以使用`File` 或 `FileItem` 对象来接收文件。`FileItem` 是Apache Commons FileUpload...