通过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 构造函数 实例分析
Nov 26 Javascript
javascript json2 使用方法
Mar 16 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
Jan 11 Javascript
JavaScript实现16进制颜色值转RGB的方法
Feb 09 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
js如何准确获取当前页面url网址信息
Sep 13 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 Javascript
JS+DIV实现的卷帘效果示例
Mar 22 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
Apr 12 Javascript
详解node-ccap模块生成captcha验证码
Jul 01 Javascript
JS随机密码生成算法
Sep 23 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
mysql时区问题
2008/03/26 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Python读写配置文件的方法
2015/06/03 Python
Python+django实现文件下载
2016/01/17 Python
python使用Matplotlib画条形图
2020/03/25 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
Python 远程开关机的方法
2020/11/18 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
2013年军训通讯稿
2014/02/05 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
收款委托书范本
2014/09/11 职场文书
群众路线表态发言材料
2014/10/17 职场文书
生死抉择观后感
2015/06/09 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
Android存储中最基本的文件存储方式
2022/04/30 Java/Android