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


Posted in Javascript onJanuary 03, 2017

通过AngularJS实现图片上传及缩略图展示示例,废话不多说了,具体如下:

从项目中截出的代码

HTML部分:

<section>
  <img src="image/user-tuijian/tuijian_banner.png" />
  <div>
    <form ng-submit="submit_form()">
      <input type="text" name="aaa" placeholder="商品名称:" ng-model="form.goods_name" />
      <input type="text" name="bbb" placeholder="商品网址:" ng-model="form.goods_url" />
      <textarea placeholder="您宝贵的留言就是我们前进的动力!" ng-model="form.user_msg"></textarea>
      <div>
        <div ng-repeat="item in thumb">
        <!-- 采用angular循环的方式,对存入thumb的图片进行展示 -->
          <label>
            <img ng-src="{{item.imgSrc}}"/>
          </label>
          <span ng-if="item.imgSrc" ng-click="img_del($index)"></span>
        </div>
        <div ng-repeat="item in thumb_default">
        <!-- 这里之所以写个循环,是为了后期万一需要多个‘加号'框 -->
          <label>
            <input type="file" id="one-input" accept="image/*" file-model="images" onchange="angular.element(this).scope().img_upload(this.files)"/>
          </label>
        </div>
      </div>
      <p>(*^_^*)请详细描述您的需求,有助于我们快速定位并解决问题,希望我们的产品和服务能得到您的肯定。</p>
      <input type="submit" name="" value="提 交" />
    </form>
  </div>
</section>

JS部分:

Module.controller('controlName', ['$scope', '$http', function($scope, $http) {
  $scope.reader = new FileReader();  //创建一个FileReader接口
  $scope.form = {   //用于绑定提交内容,图片或其他数据
    image:{},
  };
  $scope.thumb = {};   //用于存放图片的base64
  $scope.thumb_default = {  //用于循环默认的‘加号'添加图片的框
    1111:{}
  };

  $scope.img_upload = function(files) {    //单次提交图片的函数
    $scope.guid = (new Date()).valueOf();  //通过时间戳创建一个随机数,作为键名使用
    $scope.reader.readAsDataURL(files[0]); //FileReader的方法,把图片转成base64
    $scope.reader.onload = function(ev) {
      $scope.$apply(function(){
        $scope.thumb[$scope.guid] = {
          imgSrc : ev.target.result, //接收base64
        }
      });
    };
    
    var data = new FormData();   //以下为像后台提交图片数据
    data.append('image', files[0]);
    data.append('guid',$scope.guid);
    $http({
      method: 'post',
      url: '/comm/test-upload.php?action=success',
      data:data,
      headers: {'Content-Type': undefined},
      transformRequest: angular.identity
    }).success(function(data) {
      if (data.result_code == 'SUCCESS') {
        $scope.form.image[data.guid] = data.result_value;
        $scope.thumb[data.guid].status = 'SUCCESS';
        console.log($scope.form)
      }
      if(data.result_code == 'FAIL'){
        console.log(data)
      }
    })
  };

  $scope.img_del = function(key) {  //删除,删除的时候thumb和form里面的图片数据都要删除,避免提交不必要的
    var guidArr = [];
    for(var p in $scope.thumb){
      guidArr.push(p);
    }
    delete $scope.thumb[guidArr[key]];
    delete $scope.form.image[guidArr[key]];
  };
  $scope.submit_form = function(){  //图片选择完毕后的提交,这个提交并没有提交前面的图片数据,只是提交用户操作完毕后,











到底要上传哪些,通过提交键名或者链接,后台来判断最终用户的选择,整个思路也是如此
    $http({
      method: 'post',
      url: '/comm/test.php',
      data:$scope.form,
    }).success(function(data) {
      console.log(data);  
    })
  };
}]);

最后的效果如图:

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

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

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

Javascript 相关文章推荐
javascript 事件处理程序介绍
Jun 27 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
Apr 02 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
May 26 Javascript
js的延迟执行问题分析
Jun 23 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
Aug 11 Javascript
Angularjs 创建可复用组件实例代码
Oct 09 Javascript
JS实现复制内容到剪贴板功能
Feb 05 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
Dec 24 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
DWR3 访问WEB元素的两种方法实例详解
Jan 03 #Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
Jan 03 #Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 #Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 #Javascript
JavaScript对象封装的简单实现方法(3种方法)
Jan 03 #Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
Jan 03 #Javascript
vue.js将unix时间戳转换为自定义时间格式
Jan 03 #Javascript
You might like
Apache设置虚拟WEB
2006/10/09 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
vue项目中使用百度地图的方法
2018/06/08 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python读取properties配置文件操作示例
2018/03/29 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
python实现简单的文字识别
2018/11/27 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
Python列表如何更新值
2020/05/27 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
医药专业推荐信
2013/11/15 职场文书
工程售后服务承诺书
2014/05/21 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python