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 相关文章推荐
javascript parseInt与Number函数的区别
Jan 21 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
Nov 09 Javascript
Js 回车换行处理的办法及replace方法应用
Jan 24 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
May 11 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
jQuery基本选择器之标签名选择器
Sep 03 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 Javascript
Element-UI+Vue模式使用总结
Jan 02 Javascript
40行代码把Vue3的响应式集成进React做状态管理
May 20 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中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
JavaScript的document对象和window对象详解
2010/12/30 Javascript
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
python求众数问题实例
2014/09/26 Python
python 编写简单网页服务器的实例
2018/06/01 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
Python运算符+与+=的方法实例
2021/02/18 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
50道外企软件测试面试题
2014/08/18 面试题
帮一个朋友写的求职信
2014/08/09 职场文书
2014年化验室工作总结
2014/11/21 职场文书
少先队中队工作总结
2015/08/14 职场文书