MyException - 我的异常网
当前位置:我的异常网» Web前端 » 一个关于struts2上传文件超过限制大小怎么提示的有

一个关于struts2上传文件超过限制大小怎么提示的有关问题

www.MyException.Cn  网友分享于:2015-07-20  浏览:0次
一个关于struts2上传文件超过限制大小如何提示的问题
问题描述:
在使用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);
		}
		
	}
}

文章评论

一个程序员的时间管理
一个程序员的时间管理
代码女神横空出世
代码女神横空出世
程序员必看的十大电影
程序员必看的十大电影
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
每天工作4小时的程序员
每天工作4小时的程序员
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
Java程序员必看电影
Java程序员必看电影
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员和编码员之间的区别
程序员和编码员之间的区别
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员应该关注的一些事儿
程序员应该关注的一些事儿
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
老程序员的下场
老程序员的下场
编程语言是女人
编程语言是女人
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
那些争议最大的编程观点
那些争议最大的编程观点
 程序员的样子
程序员的样子
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
总结2014中国互联网十大段子
总结2014中国互联网十大段子
我的丈夫是个程序员
我的丈夫是个程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
鲜为人知的编程真相
鲜为人知的编程真相
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的鄙视链
程序员的鄙视链
中美印日四国程序员比较
中美印日四国程序员比较
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员都该阅读的书
程序员都该阅读的书
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
旅行,写作,编程
旅行,写作,编程
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
漫画:程序员的工作
漫画:程序员的工作
我是如何打败拖延症的
我是如何打败拖延症的
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
如何成为一名黑客
如何成为一名黑客
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有