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的函数重名看其初始化方式
Mar 08 Javascript
JQuery与Ajax常用代码实现对比
Oct 03 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
Jan 20 Javascript
深入解析contentWindow, contentDocument
Jul 04 Javascript
Select标签下拉列表二级联动级联实例代码
Feb 07 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
集合Bootstrap自定义confirm提示效果
Sep 19 Javascript
angular4中关于表单的校验示例
Oct 16 Javascript
详解Puppeteer 入门教程
May 09 Javascript
在Vue中获取组件声明时的name属性方法
Sep 12 Javascript
JS call()及apply()方法使用实例汇总
Jul 11 Javascript
antd配置config-overrides.js文件的操作
Oct 31 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
php4的session功能评述(一)
2006/10/09 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
Jquery Change与bind事件代码
2011/09/29 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
python并发和异步编程实例
2018/11/15 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
韩国现代百货官网:Hmall
2018/03/21 全球购物
CHARLES & KEITH英国官网:新加坡时尚品牌
2018/07/04 全球购物
shell程序中如何注释
2012/02/17 面试题
幼儿园中秋节活动反思
2014/02/16 职场文书
二年级小学生评语
2014/04/21 职场文书
会计毕业生自荐书
2014/06/12 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang