代码拉取完成,页面将自动刷新
/**
* 文件上传管理Controller
*/
Ext.define('Panda.view.core.fileUpload.FileUploadController', {
extend: 'Ext.app.ViewController',
alias: 'controller.core-fileUpload-FileUploadController',
//文件上传使用的Ajax请求引用
//用于取消请求
fileUploadAjaxRequest: null,
/**
* 提交上传按钮事件处理函数
*/
onSubmitUploadButtonClickEventHandler: function () {
//先让调用上传组件的View进行mask
this.callerViewMasked();
//让Window进行遮罩
this.getView().mask("文件上传中...");
//控制器作用域
let controllerScope = this;
//获得应用引用
let app = Ext.getApplication();
//上传路径URL
let uploadUrl = app.coreApi.getApiUrl('fileUploadPath');
//获得文件名(用户设置的)(值)
let userDefineFileName = this.lookupReference('userDefineFileName').getValue();
//文件上传组件
let uploadFileComponent = this.lookupReference('uploadFile');
//文件上传表单DOM组件
let fileUploadDomElement = uploadFileComponent.fileInputEl.dom;
//region 验证是否表单是否为空
//验证文件表单是否有值
if(uploadFileComponent.getValue() === "")
{
//提示用户
Ext.Msg.alert("温馨提示", "您未选择任何文件,请选择文件后再上传。");
//取消遮罩(父元素)
this.callerViewUnmasked();
//取消遮罩
this.getView().unmask();
return;
}
//endregion
//region 验证是否允许的文件类型
//获得用户选择的文件的后缀
let filePath = uploadFileComponent.getValue();
let userSelectFileType = filePath.substring(filePath.lastIndexOf('.'));
//允许的文件类型
let allowFileTypes = this.getView().allowUploadFileType.split("||");
//遍历是否有文件服务,有任何一个符合就返回
let isAllowFileType = Ext.Array.some(allowFileTypes, function (item) {
return item.trim() == userSelectFileType.toLowerCase();
});
//不符合就进行返回
if(!isAllowFileType)
{
Ext.Msg.alert("温馨提示", "目前暂不支持您选择的文件类型或您选择的文件类型有误,请选择以下类型的文件:" + allowFileTypes.join('、') + '。');
//取消遮罩(父元素)
this.callerViewUnmasked();
//取消遮罩
this.getView().unmask();
return;
}
//endregion
//region 发送数据到后端
//创建表单数据
let formData =new FormData();
//表单数据加入上传的文件
formData.append('uploadFile',fileUploadDomElement.files[0]);
//表单数据加入上传的自定义文件名称
formData.append('fileSaveName',userDefineFileName);
//发起Ajax请求
this.fileUploadAjaxRequest = Ext.Ajax.request({
url: uploadUrl,
cors: true,
useDefaultXhrHeader: false,
method: 'post',
rawData: formData, //原始数据
headers: {
/*
最重要的部分,将Content-Type设置成null,
ExtJs则会由内部的XMLHTTPRequest自动生成包含boundary的Content-Type,
否则在使用rawData的情况下,
ExtJs会将Content-Type设置成text/plain
*/
"Content-Type":null
},
success:function (response,options) {
//取消调用程序的遮罩
controllerScope.callerViewUnmasked();
//取消Window遮罩
controllerScope.getView().unmask();
//获得后端的数据
let responseData = Ext.decode(response.responseText);
//如果上传成功
if(responseData.success)
{
//消息提示
Ext.Msg.alert('温馨提示', responseData.message,function () {
//需要填充数据的容器
let needFillElement = controllerScope.getView().needFillElement;
//为需要上传完成后,返回数据的容器填充数据
//如果是图片组件
if(needFillElement.setSrc)
{
needFillElement.setSrc(app.coreApi.filePathInServer);
}
else if(needFillElement.setValue) //如果是普通表单组件
{
needFillElement.setValue(responseData.data.filePathInServer);
}
else if(Ext.typeOf(needFillElement) == 'string') //如果是字符串
{
needFillElement = responseData.data.filePathInServer;
}
//关闭window
controllerScope.getView().close();
});
}
else //上传不成功
{
Ext.Msg.alert('温馨提示', responseData.message,function () {
//关闭window
controllerScope.getView().close();
});
}
},
failure:function (response,options) {
//取消调用程序的遮罩
controllerScope.callerViewUnmasked();
//取消Window遮罩
controllerScope.getView().unmask();
//获得后端的数据
let responseData = Ext.decode(response.responseText);
//上传不成功
if(!responseData.success)
{
Ext.Msg.alert('温馨提示', '文件上传错误。错误信息:' + responseData.message);
return;
}
//消息提示
Ext.Msg.alert('温馨提示', '文件上传错误。');
}
});
//endregion
},
/**
* 取消上传按钮事件处理函数
*/
onCancelSubmitButtonClickEventHandler: function () {
//取消mask
this.callerViewUnmasked();
//取消Window遮罩
this.getView().unmask();
//取消Ajax请求
Ext.Ajax.abort(this.fileUploadAjaxRequest);
//关闭Window
this.getView().close();
},
/**
* 用户点击关闭按钮事件处理函数
*/
onCloseButtonClickEventHandler: function( panel, eOpts ) {
//取消mask
this.callerViewUnmasked();
//取消Ajax请求
Ext.Ajax.abort(this.fileUploadAjaxRequest);
},
/**
* 对调用者的视图进行mask
*/
callerViewMasked: function (){
//调用者的View进行mask
//注意caller定义在View中
//注意caller传入的是Controller类型
this.getView().caller.getView().mask();
},
/**
* 对调用者的视图进行取消mask
*/
callerViewUnmasked: function (){
//注意caller定义在View中
//注意caller传入的是Controller类型
this.getView().caller.getView().unmask();
},
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。