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 Cookie的读取和写入函数
Dec 08 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
Oct 17 Javascript
Jquery截取中文字符串的实现代码
Dec 22 Javascript
js onload事件不起作用示例分析
Oct 09 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
Jun 10 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
AngularJS基础 ng-click 指令示例代码
Aug 01 Javascript
jQuery事件绑定用法详解
Sep 08 Javascript
js简易版购物车功能
Jun 17 Javascript
elementUI table表格动态合并的示例代码
May 15 Javascript
微信小程序云开发详细教程
May 16 Javascript
Vue表单控件数据绑定方法详解
Feb 05 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
基于文本的访客签到簿
2006/10/09 PHP
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
Python网络编程 Python套接字编程
2017/09/13 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
python FTP编程基础入门
2021/02/27 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
阿波罗盒子:Apollo Box
2017/08/14 全球购物
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
电气自动化专业职业规划范文
2014/02/16 职场文书
幼儿园课题方案
2014/06/09 职场文书
迎国庆演讲稿
2014/09/15 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
委托公证书样本
2015/01/23 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
新年晚会开场白
2015/05/29 职场文书
工程移交协议书
2016/03/24 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers