ajaxForm上传文件到本地服务器(封装)

2023-02-17,,,

不啰嗦,直接看代码

1.html:

 <div class="con-item fix">
<span class="f">文章封面<sup style="color: red"> *</sup></span>
<div class="f con-item-img">
<form method="post" enctype="multipart/form-data" id="Form_1" action="">
<div class="upload-img">
<i ng-show="!infoModel.cover" class="ti-plus"></i>
<img ng-if="infoModel.cover" ng-src="{{infoModel.cover}}"/>
<input type="file" class="btn-file" id="input_1" name="file"/>
</div>
</form>
</div>
</div>

2.js封装ajaxForm:(用flag判断是因为当页面中有多个上传按钮时,让每一个form只初始化一次,如果不做判断chenge事件和submit事件会绑定多次,结果就会提交多次)

var upLoadImage = {
inputIdArr : [],
formIdArr : [],
start : function(formId, inputId, showRequest, callback){ var options = {
url : api.API_UP_LOAD_FILE,
beforeSubmit: showRequest, //提交前处理
success : callback,
resetForm: true,
dataType: 'json'
}; var flag = true;
for(var i = 0; i < this.inputIdArr.length; i++)
{
if(this.inputIdArr[i] == inputId)
{
flag = false;
break;
}
}
if(flag) //相同的ID只綁定一次事件
{
$("#" + inputId).change(function(){
$("#" + formId).submit();
});
this.inputIdArr.push(inputId);
} var formFlag = true;
for(var j = 0; j < this.formIdArr.length; j++)
{
if(this.formIdArr[j] == formId)
{
formFlag = false;
break;
}
}
if(formFlag)
{
$("#" + formId).ajaxForm(function(){}); $("#" + formId).submit(function(){ $(this).ajaxSubmit(options);
return false;
});
this.formIdArr.push(formId);
}
},
}

3.调用方法

upLoadFile: function(){

        upLoadImage.start("Form_1", "input_1",
function(formData) { //表单提交前被调用的回调函数
var file = formData[0].value.type; //formData是表单文件的一个数组 if (!/\/(?:jpg|png|bmp|pdf|mp4|MOV)/i.test(file)){ //这里可以限定上传文件格式
alert("格式不正确!"); $("#input_1").val(""); //如果不成功就清空文件域,tip:在IE中安全设置的原因不允许清空文件域 return false; //如果“beforeSubmit”回调函数返回false,那么表单将不被提交
}
},
function(responseText, statusText) { //表单提交成功后调用的回调函数
if(statusText == "success")
{
UpLoadCtrl.upLoadModel.pdfURL = responseText.data.url;
UpLoadCtrl.scope.$apply();
}
}
)
}

4.注:项目使用了angular js和themify字体

ajaxForm上传文件到本地服务器(封装)的相关教程结束。

《ajaxForm上传文件到本地服务器(封装).doc》

下载本文的Word格式文档,以方便收藏与打印。