angularjs实现多张图片上传并预览功能


Posted in Javascript onFebruary 24, 2017

本文实例为大家分享了angularjs上传多张图片并预览的具体代码,供大家参考,具体内容如下

directive.js

/* 
 * 多图片上传及预览指令(需指定图片类名) 
 * 
 */ 
 
angular.module('routerModule').directive('fileModel', ['$parse', 'fileReader', function($parse, fileReader) { 
 return { 
 restrict:'A', 
  link:function(scope, element, attrs, ngModel) { 
  var model = $parse(attrs.fileModel); 
  var modelSetter = model.assign; 
  var imgviewID = attrs["imgViewId"]; 
  var imgView = angular.element(document.querySelector("."+imgviewID)); 
  element.bind('change', function(event) { 
  scope.$apply(function() { 
   modelSetter(scope, element[0].files[0]); 
  }); 
  //附件预览 
  scope.file = (event.srcElement || event.target).files[0]; 
  fileReader.readAsDataUrl(scope.file, scope).then(function(result) { 
   imgView.attr("src",result); 
  }); 
  }); 
 } 
 } 
}]); 
 
angular.module('routerModule').factory('fileReader', ["$q", "$log", function($q, $log) { 
 var onLoad = function(reader, deferred, scope) { 
 return function() { 
  scope.$apply(function() { 
  deferred.resolve(reader.result); 
  }); 
 } 
 } 
 
 var onError = function(reader, deferred, scope) { 
 return function() { 
  scope.$apply(function() { 
  deferred.reject(reader.result); 
  }); 
 }; 
 }; 
 
 var getReader = function(deferred, scope) { 
 var reader = new FileReader(); 
 reader.onload = onLoad(reader, deferred, scope); 
 reader.onerror = onError(reader, deferred, scope); 
 return reader; 
 }; 
 
 var readAsDataURL = function(file, scope) { 
 var deferred = $q.defer(); 
 var reader = getReader(deferred, scope); 
 reader.readAsDataURL(file); 
 return deferred.promise; 
 } 
 return { 
 readAsDataUrl: readAsDataURL 
 }; 
 } 
]);

html关键代码

<section class="infogroup"> 
 <h4>法人证件</h4> 
 <div class="row relatedCard"> 
 <div class="col-md-4 txtcenter"> 
  <p>身份证正面</p> 
  <div><img ng-src="showImg/{{dealer.idCardFace}}" class="idCardFace" enlarge-pic/></div> 
  <span class="btn btn-file btn btn-xs btn-primary btn-editable picEdit"><i class="fa fa-edit"></i> 点击编辑 
   <input type="file" file-model="idCardFace" img-view-id="idCardFace" /> 
  </span> 
 </div> 
 <div class="col-md-4 txtcenter"> 
  <p>身份证反面</p> 
  <div><img ng-src="showImg/{{dealer.idCardBack}}" class="idCardBack" enlarge-pic/></div> 
  <span class="btn btn-file btn btn-xs btn-primary btn-editable picEdit"><i class="fa fa-edit"></i> 点击编辑 
   <input type="file" file-model="idCardBack" img-view-id="idCardBack" /> 
  </span> 
 </div>     
 </div> 
</section>

controller.js中发送到后台的数据

$scope.postData = { 
 dealerId: $scope.dealer.dealerId, 
 companyName: $scope.dealer.companyName, 
 companySize: $scope.dealer.companySize, 
 idCardFace: angular.element(document.querySelector(".idCardFace"))[0].src, 
 idCardBack: angular.element(document.querySelector(".idCardBack"))[0].src 
}; 
$http.post('updateDealerCertificate',$scope.postData).success(function(data){ 
<!-- 成功执行代码 --> 
});

预览如下:

angularjs实现多张图片上传并预览功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用一段js程序来实现动画功能
Mar 06 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
js简单工厂模式用法实例
Jun 30 Javascript
深入解读JavaScript中的Iterator和for-of循环
Jul 28 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
May 18 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
使用canvas及js简单生成验证码方法
Apr 02 Javascript
关于webpack代码拆分的解析
Jul 20 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
Sep 19 Javascript
为什么要使用Vuex的介绍
Jan 19 Javascript
JavaScript获取页面元素的常用方法详解
Sep 28 Javascript
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
Angularjs分页查询的实现
Feb 24 #Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 #Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
Feb 24 #Javascript
canvas实现图片根据滑块放大缩小效果
Feb 24 #Javascript
详解JS中的立即执行函数
Feb 24 #Javascript
几行js代码实现自适应
Feb 24 #Javascript
javascript 删除数组元素和清空数组的简单方法
Feb 24 #Javascript
You might like
php+oracle 分页类
2006/10/09 PHP
基于文本的访客签到簿
2006/10/09 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
学习ExtJS border布局
2009/10/08 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
js实现select下拉框选择
2020/01/11 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Python字符串详细介绍
2015/05/09 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
会计电算化学生个人的自我评价
2014/02/08 职场文书
学生请假条格式
2014/04/11 职场文书
优质服务演讲稿
2014/05/14 职场文书
婚前协议书范本两则
2014/10/16 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
毕业生入职感言
2015/07/31 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
基于redis+lua进行限流的方法
2022/07/23 Redis