angularjs实现多张图片上传并预览功能

发布时间 - 2026-01-10 23:16:03    点击率:

本文实例为大家分享了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上传多张图片并预览  # angularjs上传图片并预览  # angularjs多张图片上传预览  # Javascript图片上传前的本地预览实例  # js图片上传前预览功能(兼容所有浏览器)  # 图片上传之前检查大小、尺寸、格式并预览的js代码  # js实现图片上传预览原理分析  # Vue.js 2.0 移动端拍照压缩图片上传预览功能  # js前端实现多图图片上传预览的两个方法(推荐)  # 兼容IE和FF的图片上传前预览js代码  # javascript 图片上传预览-兼容标准  # js实现前端图片上传即时预览功能  # js实现图片上传并预览功能  # 上传  # 多图  # 大家分享  # 具体内容  # 大家多多  # 中发  # 多张  # bind  # querySelector  # event  # change  # apply  # document  # assign  # modelSetter  # model  # imgView  # imgViewId 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: Python进程池调度策略_任务分发说明【指导】  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何在Windows虚拟主机上快速搭建网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  常州企业网站制作公司,全国继续教育网怎么登录?  重庆市网站制作公司,重庆招聘网站哪个好?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  如何确保西部建站助手FTP传输的安全性?  Java解压缩zip - 解压缩多个文件或文件夹实例  Laravel如何处理异常和错误?(Handler示例)  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel怎么使用Intervention Image库处理图片上传和缩放  详解阿里云nginx服务器多站点的配置  进行网站优化必须要坚持的四大原则  Laravel怎么上传文件_Laravel图片上传及存储配置  网站优化排名时,需要考虑哪些问题呢?  Laravel如何使用Collections进行数据处理?(实用方法示例)  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  iOS正则表达式验证手机号、邮箱、身份证号等  javascript如何操作浏览器历史记录_怎样实现无刷新导航  大同网页,大同瑞慈医院官网?  Laravel集合Collection怎么用_Laravel集合常用函数详解  python中快速进行多个字符替换的方法小结  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  如何快速选择适合个人网站的云服务器配置?  Swift中switch语句区间和元组模式匹配  黑客如何通过漏洞一步步攻陷网站服务器?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  想要更高端的建设网站,这些原则一定要坚持!  如何在IIS7上新建站点并设置安全权限?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  ,怎么在广州志愿者网站注册?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  香港服务器WordPress建站指南:SEO优化与高效部署策略  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel怎么在Blade中安全地输出原始HTML内容  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何续费美橙建站之星域名及服务?