使用ajax进行文件上传,代码如下:
//上传资源
function uploadFile(obj){
//获取上传文件
var preFile = obj.files[0];
if(preFile == undefined || preFile == "") {
layer.msg("请选择上传的文件!", {icon: 5});
return false;
}
var pathStr = "",courseType = $("#type option:selected").val();
if(courseType == 1){
pathStr = "kxcourse/img";
}
else
{
pathStr = "kxcourse/video";
}
var formData = new FormData();
formData.append("createFileName",pathStr)
formData.append("file",preFile);
formData.append("fileName",preFile.name || preFile.fileName);
formData.append("fileSize",preFile.size || preFile.fileSize);
$.ajax({
type : "post",
contentType:false, //必须false才会避开jQuery对 formdata 的默认处理 , XMLHttpRequest会对 formdata 进行正确的处理
processData: false, //必须false才会自动加上正确的Content-Type
data : formData,
url : basePath+"img/upload.action",
success : function(data){
$("#zzc").css("display","block");
if (data.errorType == true) {
layer.msg("请选择图片类型!", {
icon : 5
},function(){
$("#zzc").css("display","none");
});
return;
}
if (data.state == 200) {//上传成功,更新用户信息
layer.msg("上传成功", {
icon : 1,
time : 1000
},function(){
$("#zzc").css("display","none");
});
//隐藏域存值
$('#fileUrl').val(data.url);
$('#fileSize').val(data.size);
preFile = "";
}else{
layer.msg("上传失败", {
icon : 5
},function(){
$("#zzc").css("display","none");
});
preFile = "";
}
},
error : function(){
preFile = "";
}
});
}
然后小文件可以上传成功,但是一个14M的视频上传就会报如题的错误,后来百度许久。网上有说是tomcat的setting.xml文件里需要加上最大上传配置,也有说是nginx限制,需要改上传配置。但本人都尝试了一番,返现并不能解决问题。
解决方法:在项目的spring-mvc.xml配置中有一个上传文件配置,原本设置的配置值很小,就是自处导致了上传受阻,连接重置,所以只需如下改大上传最大值即可;
<!--设置上传文件大小限制,此处大小近50M-->
<bean:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<bean:property name="maxUploadSize" value="50000000"></bean:property>
</bean:bean>