在ionic中用 ajaxfileupload.js 插件上传文件
来源:互联网 发布:淘宝海报设计技巧 编辑:程序博客网 时间:2024/06/07 00:34
1、定义一个file表单,并隐藏
<div class="item"><div class="">附件</div><div class=""><button class="button button-royal button-block" ng-click="uploadFile()">上传照片</button><input type="file" id="hiddenFileWidget" name="img" class="absolute visibility_hidden" onchange="angular.element(this).scope().startUpload()"></div></div><input type="hidden" ng-model="formData.filePath">
注意事项:
1)、file控件在angular中没有所谓的“ng-change”事件,因此,只能使用“原生事件”
2)、onchange="angular.element(this).scope().startUpload()" 是将原生事件引入到对应的$scope链中。
2、逻辑controller(控制层)选择文件确认之后上传文件
//上传文件$scope.uploadFile = function(){$("#hiddenFileWidget").click();};//上传文件 action$scope.startUpload = function(){tipService.loading("正在上传图片");publicRepairService.uploadFileAction($scope);};
备注:tipService.loading("正在上传图片") 的作用是弹出一个遮罩层,提示用户正在上传,并且防止图片没有上传完成就提交数据。
3、对应的服务service处理具体的接口,用户定义上传成功之后的回调函数
//上传文件function uploadFileAction(__scope__){var mysetting = {url : "/Repair/updateImg",fileElementId : "hiddenFileWidget",data: { "token":userInfoService.getUserKey()},"token":userInfoService.getUserKey(),//相当于java中try语句块的用法,这里data是你post后返回的结果,要与dataType类型匹配success: function (data, status) {},//相当于java中catch语句块的用法error: function (data, status, e) {tipService.loadingHide();var responseData = eval('(' + data.responseXML.documentElement.innerText + ')');// $("#psersonImage").attr("src",responseData.data.avatar);if(responseData.status == 1){tipService.alert({title:"提示!",template:responseData.msg,callback:function(){if(__scope__.formData.filePath == "" || __scope__.formData.filePath == null || __scope__.formData.filePath == undefined){__scope__.formData.filePath = responseData.data;}else{__scope__.formData.filePath = __scope__.formData.filePath + "," +responseData.data;}}});}else if(responseData.status == 999){tipService.alert({title:"提示!",template:responseData.msg,callback:function(){//window.location.href="/wap/tmpl/member/login.html";}});}else{tipService.alert({title:"提示!",template:responseData.msg,callback:function(){}});}}};publicService.uploadFile(mysetting);}
备注:tipService.loadingHide();是隐藏遮罩层,允许用户操作。
4、底层利用ajaxfileupload.js插件完成异步上传文件
/** 上传图片* */function uploadFile(mysetting){function startUpload(){$.ajaxFileUpload({url : WAP_CONFIG.path+mysetting.url, //需要链接到服务器地址secureuri : false, //是否使用安全方式 httpsfileElementId : mysetting.fileElementId, //文件选择框的id属性dataType: 'json', //服务器返回的格式,可以是xml,默认还是用js最喜欢的jsondata: mysetting.data,success: mysetting.success, //相当于java中try语句块的用法,这里data是你post后返回的结果,要与dataType类型匹配error: mysetting.error //相当于java中catch语句块的用法});}//检测参数mysetting = mysetting || {};var defaultSetting = {url : "/Repair/updateImg",data : "",fileElementId : "",success : function(){},error:function(){}};//覆盖默认参数mysetting = $.extend(defaultSetting,mysetting);startUpload(mysetting);}
自定义弹出层工具服务
/** * 查询条件服务 * */angular.module('houseApp').factory('tipService', ["ApiService", "WAP_CONFIG","$ionicPopup","$ionicLoading",function(ApiService, WAP_CONFIG,$ionicPopup,$ionicLoading) {/** alert 弹出提示* */var promptPopupObj;function prompt(){var mysetting = mysetting || {};var defaultSetting = {template: '<input type="password" ng-model="data.wifi">',title: 'Enter Wi-Fi Password',subTitle: 'Please use normal things',scope: $scope,buttons: [{ text: 'Cancel' },{text: '<b>Save</b>',type: 'button-positive',onTap: function(e) {if (!$scope.data.wifi) {//不允许用户关闭,除非他键入wifi密码e.preventDefault();} else {return $scope.data.wifi;}}},]};mysetting = $.extend(defaultSetting,mysetting);promptPopupObj = $ionicPopup.show({template: mysetting.template,title:mysetting.title,subTitle:mysetting.subTitle,scope: mysetting.scope,buttons: mysetting.buttons});myPopup.then(function(res) {console.log('Tapped!', res);});}/** * 一个确认对话框 */var confirmPopupObj;function confirm(mysetting){var mysetting = mysetting || {};var defaultSetting = {title:"Don\'t eat that!",template:"It might taste good",sureCallback:function(){},falseCallBack:function(){}};mysetting = $.extend(defaultSetting,mysetting);confirmPopupObj = $ionicPopup.confirm({title: mysetting.title,template: mysetting.template});confirmPopupObj.then(function(res) {if(res) {mysetting.sureCallback();}else {mysetting.falseCallBack();}});}/** 一个提示对话框* */var alertPopupObj;function alert(mysetting){var mysetting = mysetting || {};var defaultSetting = {title:"Don\'t eat that!",template:"It might taste good",callback:function(){}};mysetting = $.extend(defaultSetting,mysetting);alertPopupObj = $ionicPopup.alert({title: mysetting.title,template: mysetting.template});alertPopupObj.then(function(res) {mysetting.callback();});}/* * 弹出加载信息 * */function loading(content){if(content == "" || content == undefined || content == null){content = 'Loading...';}$ionicLoading.show({template : content});}/* * 隐藏加载信息 * */function loadingHide(){$ionicLoading.hide();}//返回service的功能return {"loading":loading,"loadingHide":loadingHide,"alert":alert,"prompt":prompt,"confirm":confirm};}]);
0 0
- 在ionic中用 ajaxfileupload.js 插件上传文件
- ajaxfileupload.js 文件上传插件之改进
- 上传文件(可用ajaxfileupload.js插件)
- js使用AjaxFileupload插件实现文件上传
- ajaxFileUpload插件上传文件
- ajaxfileupload.js上传文件
- 使用ajaxFileUpload.js插件实现ajax无刷新上传文件
- 使用ajaxFileUpload.js插件实现ajax无刷新上传文件
- 使用ajaxfileupload.js插件实现Ajax方式上传文件
- jquery插件--ajaxfileupload.js上传文件原理分析
- 异步上传文件插件-ajaxfileupload.js简单例子
- jQuery ajax + ajaxfileupload.js插件 实现无刷新文件上传
- jquery插件--ajaxfileupload.js上传文件原理分析
- jquery ajaxFileUpload.js插件支持多文件上传的方法
- ajaxfileupload.js异步上传文件插件(完整demo)
- ajaxFileUpload Jquery文件上传插件
- ajaxFileUpload文件上传Jquery插件
- 使用ajaxfileupload.js上传文件
- angularjs 权限控制显示办法
- gulp-angular-templatecache缓存templateURL
- angular 设置select默认option选择值
- 剑指offer--面试题32:整数中1出现的次数(从1到n整数中1出现的次数)
- 更进一步的了解Keil Flash的下载算法
- 在ionic中用 ajaxfileupload.js 插件上传文件
- angular 拦截器每个请求传递用户的token
- ionic 顶/底部按钮宽度“平均分”
- Android开发面试者的几个建议
- 弹出遮罩层,阻止背景滚动
- hive优化
- cordova 环境搭建
- 深入理解javascript(14):自由变量到作用域链
- 剑指Offer完整源代码链接