AngularJs上传前预览图片的实例代码

在工作中,使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,之前查了一些资料,结合实践,得出一种比较实用的方法,相对简化版,在这里记录一下,如有不同看法,欢迎一起沟通,一起成长。

demo.html:

<!doctype html>
<html ng-app="myTestCtrl">
<head>
 <meta charset="UTF-8">
 <title>demo</title>
 <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
 <script src="myCtrl.js"></script>
 <style type="text/css">
 .inputBox{width: 160px; height: 28px; padding: 0 0 0 8px; box-sizing: border-box; background-color:#fff; margin-left: 5px; border: 1px solid #c4c4c4; color: #333; border-radius: 3px; -o-border-radius: 3px;-moz-border-radius: 3px;-webkit-border-radius: 3px;}
 .inputBox:focus{border: 1px solid #207fe9;}
 .btn-primary {color: #fff; background-color: #428bca; border-color: #357ebd;}
 .btn {display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: 400;line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 4px;}
 .bg-bbbbbb{background-color: #bbb;}
 .fl{float:left;}
 .ml5{margin-left: 5px;}
 .ml10{margin-left: 10px;}
 .ml30{margin-left: 30px;}
 .mt10{margin-top: 10px;}
 .mt20{margin-top: 20px;}
 .f-cb:after:after{display:block;clear:both;visibility:hidden;height:0;overflow:hidden;content:".";}
 .f-cb{zoom:1;}
 .f-cb .topSearch{ float: left; margin-top: 10px; line-height: 30px; font-size: 12px; }
 </style>
</head>
<body id="myTestCtrl" ng-controller="myTestCtrl">
<div class="wrapper">
 <div class="content">
  <div class="f-cb" style="height: 40px;">
   <div class="topSearch"><span class="w70 tr dib fl">主视觉图:</span><input type="text" class="inputBox fl ml5" ng-model="fileName"><button class="btn btn-primary ml10" ng-class="{'bg-bbbbbb':imgDisabled}" style="width:60px; margin-top:-3px; height:18px; position: relative;" img-upload></button></div>
  </div>
  <div class="f-cb mt10"><img ng-src="{{thumb.imgSrc}}" style="width:200px; height: 200px;" ng-show="thumb.imgSrc"/></div>
 </div>
 <div class="mt20 ml30">
  <button class="btn btn-primary" ng-click="saveClick()" ng-class="{'bg-bbbbbb':submitDisabled}">提交</button>
 </div>
</div>
</body>
</html>
<span style="font-size:14px;">myCtrl.js:</span>
<pre name="code" class="javascript">//关键 js 部分
var myTestCtrl = angular.module('myTestCtrl', []);
//定义“上传”指令,修改后也可用于上传其他类型的文件
myTestCtrl.directive("imgUpload",function(){
 return{
  //通过设置项来定义
  restrict: 'AE',
  scope: false,
  template: '<div class="fl"><input type="button" id="storeBtn" style="padding:0; position: absolute; top: 0; left: 0; background: none; border: none;color: #fff; width:84px; height: 30px; line-height: 30px;" value="选择文件"><input type="file" name="testReport" id="file" ng-disabled="imgDisabled" style="position: absolute; top: 0; left: 0; opacity: 0;height: 30px;" accept=".jpg,.png"></div>', //name:testReport 与接口字段相对应。
  replace: true,
  link: function(scope, ele, attrs) {
   ele.bind('click', function() {
    $('#file').val('');
   });
   ele.bind('change', function() {
    scope.file = ele[0].children[1].files;
    if(scope.file[0].size > 52428800){
     alert("图片大小不大于50M");
     scope.file = null;
     return false;
    }
    scope.fileName = scope.file[0].name;
    var postfix = scope.fileName.substring(scope.fileName.lastIndexOf(".")+1).toLowerCase();
    if(postfix !="jpg" && postfix !="png"){
     alert("图片仅支持png、jpg类型的文件");
     scope.fileName = "";
     scope.file = null;
     scope.$apply();
     return false;
    }
    scope.$apply();
    scope.reader = new FileReader(); //创建一个FileReader接口
    console.log(scope.reader);
    if (scope.file) {
     //获取图片(预览图片)
     scope.reader.readAsDataURL(scope.file[0]); //FileReader的方法,把图片转成base64
     scope.reader.onload = function(ev) {
      scope.$apply(function(){
       scope.thumb = {
        imgSrc : ev.target.result  //接收base64,scope.thumb.imgSrc为图片。
       };
      });
     };
    }else{
     alert('上传图片不能为空!');
    }
   });
  }
 };
});
myTestCtrl.controller("myTestCtrl", function($scope, $http) {
 //导入图片
 $scope.saveClick = function () {
  //禁用按钮
  $scope.imgDisabled = true;
  $scope.submitDisabled = true;
  var url = '';//接口路径
  var fd = new FormData();
  fd.append('testReport', $scope.file[0]);//参数 testReport=后台定义上传字段名称 ; $scope.file[0] 内容
  $http.post(url, fd, {
   transformRequest: angular.identity,
   headers: {
    'Content-Type': undefined
   }
  }).success(function (data) {
   if(data.code != 100) {
    alert(JSON.stringify('文件导入失败:'+files.files[0].name+',请重新上传正确的文件或格式'));
   }else{
    alert(JSON.stringify('文件导入成功:'+files.files[0].name));
   }
   //恢复按钮
   $scope.imgDisabled = false;
   $scope.submitDisabled = false;
  }).error(function (data) {
   alert('服务器错误,文件导入失败!');
   //恢复按钮
   $scope.imgDisabled = false;
   $scope.submitDisabled = false;
  });
 };
});
</pre>
<br>
<pre></pre>
<p></p>
<pre>
</pre>
<p></p>
<pre>
</pre> 

关于angularjs的知识大家可以参考下小编给大家整理的专题,angularjs学习笔记,一起看看吧!

以上所述是小编给大家介绍的AngularJs上传前预览图片的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • angularjs点击图片放大实现上传图片预览

    本文实例为大家分享了angularjs点击图片放大预览的具体代码,供大家参考,具体内容如下 承接上一篇文章 /*图片点击放大再点击还原*/ angular.module('routerModule').directive('enlargePic',function(){//<span style="font-family: Arial, Helvetica, sans-serif;">enlargePic指令名称,写在需要用到的地方img中即可实现放大图片</span

  • 学习使用AngularJS文件上传控件

    前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用angular,且不想因为一个上传功能又引入一个jquery,所以在网上查找基于angular的上传控件,因为angular还算比较新,貌似都没有太成熟的插件,网上的教程也大多是复制粘贴,总之没起倒多大的作用...但是皇天不负有心人,最后还是让我遇到了这个功能强大的插件,让我有种相见恨晚的感觉呀,依靠官方文档和师兄的帮助,终于搞清楚了基本的使用方法.好东

  • Angularjs上传图片实例详解

    •上传图片需要引入插件ngFileUpload,使用bower安装方法: bower install ng-file-upload --save,安装后需要在命名app的名字js文件中注入,如下所示: (function() { angular.module('app', [ 'ionic','ngStorage','ngFileUpload' ]); })(); •在相应的html中引入文件路径:<script src="lib/ng-file-upload/ng-file-upload

  • angularjs客户端实现压缩图片文件并上传实例

    主要是利用html5的canvas来进行图片的压缩,然后转化为dataURL,再有dataURL转化为Blob文件,Blob对象可以直接赋值给Formdata. app.service('Util', function($q) { var dataURItoBlob = function(dataURI) { // convert base64/URLEncoded data component to raw binary data held in a string var byteString

  • AngularJS 文件上传控件 ng-file-upload详解

    网上可以找到的 AngularJS 的文件上传控件有两个: angular-file-upload:https://github.com/nervgh/angular-file-upload ng-file-upload:https://github.com/danialfarid/ng-file-upload 这两个非常类似,连js文件的结构都是一样的.核心的js是.min.js,还都有一个-shim.min.js,用来支持上传进度条和上传暂停等高级功能. 按道理讲shim.js应该是可加可不

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

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

  • 通过AngularJS实现图片上传及缩略图展示示例

    通过AngularJS实现图片上传及缩略图展示示例,废话不多说了,具体如下: 从项目中截出的代码 HTML部分: <section> <img src="image/user-tuijian/tuijian_banner.png" /> <div> <form ng-submit="submit_form()"> <input type="text" name="aaa"

  • AngularJs上传前预览图片的实例代码

    在工作中,使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,之前查了一些资料,结合实践,得出一种比较实用的方法,相对简化版,在这里记录一下,如有不同看法,欢迎一起沟通,一起成长. demo.html: <!doctype html> <html ng-app="myTestCtrl"> <head> <meta charset="UTF-8"> <title>demo&l

  • JS上传前预览图片实例

    预览图片的js代码: 复制代码 代码如下: <script type="text/javascript">        function setImagePreview(docObj,localImagId,imgObjPreview)         {            if(docObj.files && docObj.files[0])            {                //火狐下,直接设img属性            

  • jQuery+HTML5实现图片上传前预览效果

    本文实例讲述了jQuery+HTML5实现图片上传前预览效果.分享给大家供大家参考.具体如下: 这里主要是使用HTML5 的File API,建立一個可存取到该file的url,一个空的img标签,ID为img0,把选择的文件显示在img标签中,实现图片预览功能.请选择支持HTML API的浏览器,比如谷歌Chrome和火狐等. 运行效果如下图所示: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-html5-pic-upload-pre-view-c

  • 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

  • ASP.NET MVC图片上传前预览简单实现

    本文实例为大家分享了图片上传前预览并获取图片文件名和图片字节大小的具体实现代码,供大家参考,具体内容如下 在控制器中创建一个Action: 在Views目录下对应的控制器名称下创建视图PreViewing: 上图中 标记1,引用jQuery类库. 标记2,选择文件. 标记3,预览图片. 标记4,显示图片文件名和图片字节大小. 标记5,是Javascript代码...... 本例预览: 以上就是本文的全部内容,希望对大家的学习有所帮助.

  • jQuery点击头像上传并预览图片

    先给大家展示下效果图: HTML代码 <div class="img_show img_show1"> <img src="img2/img06.jpg" width="103" height="103" alt=""> <input type="file" class="upfile" accept="*/*">

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

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

  • js 上传文件预览的简单实例

    1. FILE API html5提供了FIle和FileReader两个方法,可以读取文件信息并读取文件. 2. example <html> <body> <div id="test-image-preview" style="border: 1px solid rgb(204, 204, 204); width: 100%; height: 200px; background-size: contain; background-repeat

  • js实现上传图片之上传前预览图片

    上传图片对图片进行一下预览,可以了解图片上传后大概会是什么样子,此功能用js实现,然后在fileupload控件的change事件中调用,这样当用fileupload选择完图片以后,图片就会自动显示出来了.功能很简单,却很实用. 预览图片的js代码: 复制代码 代码如下: <script type="text/javascript"> function setImagePreview(docObj,localImagId,imgObjPreview) { if(docObj

  • JavaScript图片上传并预览的完整实例

    目录 一.前端界面是通过jqgrid展示的 二.jqgrid特性 三.代码实例 1.jqgrid页面展示 2.模块页面 3.ajax实现异步请求 五.效果展示 总结 一.前端界面是通过jqgrid展示的 jqgrid是典型的B/C架构(浏览器/服务器模式),服务器端只需提供数据管理,浏览器只需负责数据显示. jqGrid是用ajax实现对请求和响应的处理,支持局部实时刷新. 二.jqgrid特性 通过配置url地址数据显示格式 支持行编辑,列搜索过滤 支持分页 添加表单支持文件上传 链式调用 三

随机推荐