通过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延迟加载
Mar 09 Javascript
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
JQuery 常用方法和事件详细介绍
Apr 18 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 Javascript
javascript去除空格方法小结
May 21 Javascript
jQuery+ajax实现无刷新级联菜单示例
May 21 Javascript
jQuery插件ajaxfileupload.js实现上传文件
Oct 23 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
Aug 22 Javascript
Vuex mutitons和actions初使用详解
Mar 04 Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 Javascript
webpack是如何实现模块化加载的方法
Nov 06 Javascript
VUE实现吸底按钮
Mar 04 Vue.js
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
索尼ICF-SW100收音机评测
2021/03/02 无线电
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
php DES加密算法实例分析
2019/09/18 PHP
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
Python读写ini文件的方法
2015/05/28 Python
python机器学习实战之树回归详解
2017/12/20 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
Python内置加密模块用法解析
2019/11/25 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
如何写好优秀的创业计划书
2014/01/30 职场文书
主题团日活动总结
2014/06/25 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
业务员管理制度范本
2015/08/06 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python