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 相关文章推荐
Jquery知识点二 jquery下对数组的操作
Jan 15 Javascript
JavaScript var声明变量背后的原理示例解析
Oct 12 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
Dec 16 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
Sep 04 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
Nov 25 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
js面向对象编程OOP及函数式编程FP区别
Jul 07 Javascript
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之数据库操作详解及乱码解决!
2007/01/02 PHP
php遍历目录viewDir函数
2009/12/15 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
javascript的内存管理详解
2013/08/07 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
高校毕业生自我鉴定
2013/10/27 职场文书
英文简历中的自我评价用语
2013/12/09 职场文书
荷叶圆圆教学反思
2014/02/01 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
借条如何写
2015/05/26 职场文书
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android