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

本文实例为大家分享了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){
<!-- 成功执行代码 -->
});

预览如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Angular2仿照微信UI实现9张图片上传和预览的示例代码

    本来在看vue.js没多久,最近在赶一个项目用回了angular2,还是先把ng2搞定吧,毕竟还不怎么懂.这两天我做的是用户表单数据的提交,大部分很简单,双向绑定就完事了,主要还是沟通的问题哈哈哈哈,虽然沟通的时候有点暴躁想甩锅,不过出了门还是高高兴兴吃饭高高兴兴回去. 好了切入问题.这几天做得最久的是仿照微信UI做的图片上传/显示缩略图/预览/删除功能,要求图片1--9张.下面来记录下如何实现微信的图片预览/删除功能. 样式--weui.css 样式用的是微信官方ui,weui.min.css

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

    本文实例为大家分享了angularjs上传多张图片并预览的具体代码,供大家参考,具体内容如下 directive.js /* * 多图片上传及预览指令(需指定图片类名) * */ angular.module('routerModule').directive('fileModel', ['$parse', 'fileReader', function($parse, fileReader) { return { restrict:'A', link:function(scope, elemen

  • AngularJS实现图片上传和预览功能的方法分析

    本文实例讲述了AngularJS实现图片上传和预览功能的方法.分享给大家供大家参考,具体如下: html5原生方法 先看一下html5原生方法上传和预览图片的实现: // <img id="img-preview"> var imgPreview = document.getElementById("img-preview"); // <input id="img-input" type="file">

  • input file上传 图片预览功能实例代码

    input file上传图片预览其实很简单,只是没做过的感觉很神奇,今天我就扒下她神秘的面纱,其实原理真的很简单,下面通过一段代码大家都明白了. 具体代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="jquery.js"></script>

  • Kindeditor单独调用单图上传增加预览功能的实例

    html代码: <p><input type="hidden" id="url1" name="IDCardPicture1" value="" /> <input type="button" id="image1" value="选择图片" style="width: 150px;height: 30px;" /&g

  • JavaScript实现单图片上传并预览功能

    本文实例为大家分享了JavaScript实现单图片上传并预览功能的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>单图片上传并实现预览</title> <style> /*上传图片*/ .addPerson{ line-height: 190px; } .a

  • ThinkPHP5+Layui实现图片上传加预览功能

    html代码 <div class="layui-upload"> <button type="button" class="layui-btn" id="cover">上传封面</button> </div> <div class="layui-input-inline"> <img id="preview" width

  • Ajax实现图片上传并预览功能

    先给大家展示下效果图,大家感觉不错,请参考实现代码. 最近在使用ThinkPHP5开发项目中客户有一个需求是在图片上传时附带预览功能.虽然现在有很多的插件能实现,但是还是觉得自己写比较好.我们知道,图片上传需要一个input:file表单 <input type='file' name='pic'> 当我们点击表单的时候提示选择需要上传的图片.但是此需求我们分析一下,可以在点击图片的时候使用JS实现预览功能,并且楼主也是这样做的.代码如下: function getFileUrl(source

  • JQ图片文件上传之前预览功能的简单实例(分享)

    1.先准备一个div onchange触发事件 <input type="file" onchange="preview(this)" ></span> <div id="preview"></div> 2.写JS代码 //上传图片之前预览图片 function preview(file){ if (file.files && file.files[0]){ var reader =

  • vue+elementUI实现多文件上传与预览功能实战记录(word/PDF/图片/docx/doc/xlxs/txt)

    目录 需求 实现需求 1.利用on-preview+window.open()实现简易版预览效果 2.封装组件实现更完整的上传完成.预览功能 追加关于问的比较多的问题回复 1.imgsrc路径 2.显示原本elementui的那个上传样式 3.file.response显示没有这个属性和方法 4.https://view.officeapps.live.com/op/view.aspx?src=${data}是干嘛的?预览PDF需要安装其他的插件吗? 总结 需求 最近在做vue2.0+eleme

  • js图片上传前预览功能(兼容所有浏览器)

    网上找到的一份文件上传前预览的代码,转自JavaScript 图片的上传前预览(兼容所有浏览器) <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <style type="text/css"> #preview, .img, img { w

随机推荐