1. spring的配置和处理:
(1)spring-mvc.xml的配置:
<!-- Multipart Resolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10240000"/>
<property name="resolveLazily" value="true"/>
</bean>
设置最大的Size。
(2)在Controller里的方法:
@ExceptionHandler(Exception.class)
public void handleException(Exception ex,HttpServletRequest request,HttpServletResponse response){
StringBuffer sb = new StringBuffer();
String result="[{\"success\":\"0\"}]";
sb.append("<script language='javascript'>history.go(-1);alert('");
if (ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
sb.append("文件大小不应大于1M");
result="[{\"success\":\"2\"}]";
} else{
sb.append("上传异常!");
result="[{\"success\":\"3\"}]";
}
sb.append("!');</script>");
try {
//response.setContentType("text/html; charset=utf-8");
response.getWriter().println(result);
//response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}
}
(3)Jquery:
$('#projectForm').ajaxForm({
dataType: 'json',
beforeSubmit: function() {
$('#saveProjectBtn').addClass('disabled');
$('#saveProjectBtn').attr('disabled','disabled');
return PROJECT.validate('#projectForm');
},
success: function (json) {
if(json[0].success=="0"){
setTimeout(
function(){
$.ajax({
type: 'get',
url: "/config/project",
dataType: 'html',
success: function(html) {
$('#Common').html(html);
},
error: function() {
}
})
},
2000);
}else if(json[0].success=="2"){
alert('The upload file size is over 2M')
}else if(json[0].success=="3"){
alert('There are some errors happened');
}
},
error: function () {
alert('There are some errors happened');
}
});
(4)html;
<input id="picture" type="file" size="45" name="picture" class="input">
经过上面的操作之后,可以在我本地的IE 8和火狐上即判断图片大小,又能上传图片了。
可是在别人的笔记本上却不能执行ajaxForm的success代码,很郁闷,同事试了好多方法都不行。如下的方法:
1. 不能得到typeValueJson 的值,这个值又是必须得,导致下面这个方法还是有问题。
(1)jquery:
init: function () {
$("#typeValueBtn").live("click", function () {
$('#newTypeValue').modal('show');
});
$('#hardwareVersion').live('blur', function () {
var result = PROJECT.checkHardwareAndSoftwareVersionUnique();
});
$('#softwareVersion').live('blur', function () {
var result = PROJECT.checkHardwareAndSoftwareVersionUnique();
});
$("#newProjectForm").ajaxForm(
{
beforeSubmit: function () {
var typeNameStrs = $('#typeNameStrArray').val();
var typeNameStrArray = new Array();
typeNameStrArray = typeNameStrs.split(',');
var typeValueJson = '[';
for (var index in typeNameStrArray) {
var typeNamestr = $('#' + typeNameStrArray[index]);
var isSelect = typeNamestr.is('select');
if (typeNamestr.length > 0) {
typeValueJson += '{\"typeId\":\"' + typeNamestr.data('typeid') + '\", \"typeValue\":\"' + typeNamestr.val() + '\", \"isSelect\":\"' + isSelect + '\"},'
}
}
typeValueJson = typeValueJson.substring(0, typeValueJson.length - 1);
typeValueJson += ']';
if (typeValueJson.length > 2) {
$('#typeNameJsonArray').val(typeValueJson);
} else {
$('#typeNameJsonArray').val('');
}
$('#saveProjectBtn').addClass('disabled');
$('#saveProjectBtn').attr('disabled', 'disabled');
return PROJECT.validate('#newProjectForm');
},
success: function (data) {
switch (data) {
case 'success':
setTimeout(
function () {
$.ajax({
type: 'get',
url: "/config/project",
dataType: 'html',
success: function (html) {
$('#Common').html(html);
},
error: function () {
}
})
},
2000);
break;
case 'max_error':
alert('The upload file size is bigger than 2M');
$('#saveProjectBtn').removeClass('disabled');
$('#saveProjectBtn').removeAttr('disabled');
break;
case 'error':
alert('There are some errors happened');
$('#saveProjectBtn').removeClass('disabled');
$('#saveProjectBtn').removeAttr('disabled');
break;
}
},
error: function () {
alert('There are some errors happened');
}
}
);
(2)Controller的代码:
/**
* 异常处理
* @param ex
* @param request
* @Description:
*/
@ExceptionHandler(Exception.class)
public void handleException(Exception ex,HttpServletRequest request,HttpServletResponse response){
if (ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
HttpUtil.writeData(response, "max_error");
} else{
HttpUtil.writeData(response, "error");
}
}
@RequestMapping(value = "/config/newProjectGetId", method = RequestMethod.POST)
public void newProjectGetId(HttpServletRequest request,HttpServletResponse response) throws IOException, JSONException {
String typeValueJson = request.getParameter("typeNameJsonArray");
HttpUtil.writeData(response, "success");
}
3. 最后在那个IE8上没有问题的代码:
(1).Jquery
$(function () {
var win;
var projectIdStr = "";
$("#saveProjectBtn").bind("click", function(){
PROJECT.initJsonType();
$("#newProjectForm").ajaxForm(
{
beforeSubmit: function () {
$('#saveProjectBtn').addClass('disabled');
$('#saveProjectBtn').attr('disabled', 'disabled');
return PROJECT.validate('#newProjectForm');
},
success: function (data) {
switch (data) {
case 'success':
setTimeout(
function () {
$.ajax({
type: 'get',
url: "/config/project",
dataType: 'html',
success: function (html) {
$('#Common').html(html);
},
error: function () {
}
})
},
2000);
break;
case 'max_error':
alert('The upload file size is bigger than 2M');
$('#saveProjectBtn').removeClass('disabled');
$('#saveProjectBtn').removeAttr('disabled');
break;
case 'error':
alert('There are some errors happened');
$('#saveProjectBtn').removeClass('disabled');
$('#saveProjectBtn').removeAttr('disabled');
break;
}
},
error: function () {
alert('There are some errors happened');
}
}
);
});
initJsonType:function(){
var typeNameStrs = $('#typeNameStrArray').val();
var typeNameStrArray = new Array();
typeNameStrArray = typeNameStrs.split(',');
var typeValueJson = '[';
for (var index in typeNameStrArray) {
var typeNamestr = $('#' + typeNameStrArray[index]);
var isSelect = typeNamestr.is('select');
if (typeNamestr.length > 0) {
typeValueJson += '{\"typeId\":\"' + typeNamestr.data('typeid') + '\", \"typeValue\":\"' + typeNamestr.val() + '\", \"isSelect\":\"' + isSelect + '\"},'
}
}
typeValueJson = typeValueJson.substring(0, typeValueJson.length - 1);
typeValueJson += ']';
if (typeValueJson.length > 2) {
$('#typeNameJsonArray').val(typeValueJson);
} else {
$('#typeNameJsonArray').val('');
}
},