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 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 个人网站制作流程图片大全,个人网站如何注销?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  JS去除重复并统计数量的实现方法  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  JavaScript如何实现错误处理_try...catch如何捕获异常?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Android利用动画实现背景逐渐变暗  佛山企业网站制作公司有哪些,沟通100网上服务官网?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Linux后台任务运行方法_nohup与&使用技巧【技巧】  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Swift开发中switch语句值绑定模式  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Android使用GridView实现日历的简单功能  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  实例解析Array和String方法  JavaScript常见的五种数组去重的方式  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  javascript中闭包概念与用法深入理解  如何在阿里云ECS服务器部署织梦CMS网站?  如何在建站之星绑定自定义域名?  ,南京靠谱的征婚网站?  Laravel如何处理和验证JSON类型的数据库字段  javascript日期怎么处理_如何格式化输出  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何实现API资源集合?(Resource Collection教程)  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  js实现获取鼠标当前的位置  微信小程序 input输入框控件详解及实例(多种示例)  ,怎么在广州志愿者网站注册?  JavaScript中的标签模板是什么_它如何扩展字符串功能  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel如何实现API速率限制?(Rate Limiting教程)  如何在建站宝盒中设置产品搜索功能?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发