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 事件参考手册
Dec 24 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 03 Javascript
jquery实现树形二级菜单实例代码
Nov 20 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
浅谈js的setInterval事件
Dec 05 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
Google 地图类型详解及示例代码
Aug 06 Javascript
JavaScript实现图片懒加载(Lazyload)
Nov 28 Javascript
详解vue之页面缓存问题(基于2.0)
Jan 10 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
js实现一个猜数字游戏
Mar 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
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
php中socket的用法详解
2014/10/24 PHP
微信access_token的获取开发示例
2015/04/16 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
vue实现单选和多选功能
2017/08/11 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
写自荐信三大法宝
2014/01/24 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL