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 目录列举函数
Nov 06 Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
javascript中[]和{}对象使用介绍
Mar 20 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 Javascript
jQuery展示表格点击变色、全选、删除
Jan 05 Javascript
jquery操作select取值赋值与设置选中实例
Feb 28 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 Javascript
vue fetch中的.then()的正确使用方法
Apr 17 Javascript
Vue 自适应高度表格的实现方法
May 13 Javascript
JS操作JSON常用方法(10w阅读)
Dec 06 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警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JavaScript中的对象序列化介绍
2014/12/30 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
Bootstrap插件全集
2016/07/18 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Python调用Redis的示例代码
2020/11/24 Python
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
民生工程实施方案
2014/03/22 职场文书
总经理任命书
2014/03/29 职场文书
《锄禾》教学反思
2014/04/08 职场文书
中学生学习保证书
2015/02/26 职场文书
2019各种承诺书范文
2019/06/24 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js
Mysql开启外网访问
2022/05/15 MySQL