通过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 相关文章推荐
jquery js 获取时间差、时间格式具体代码
Jun 05 Javascript
form表单只提交数据而不进行页面跳转的解决方案
Sep 18 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
Feb 24 Javascript
JS实现的打字机效果完整实例
Jun 20 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
Dec 13 Javascript
JavaScript中使用参数个数实现重载功能
Sep 01 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 Javascript
一次微信小程序内地图的使用实战记录
Sep 09 Javascript
ES6 Promise对象概念及用法实例详解
Oct 15 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
Feb 05 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
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP对象实例化单例方法
2017/01/19 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
Python实现快速多线程ping的方法
2015/07/15 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
Python生成器generator原理及用法解析
2020/07/20 Python
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
机械制造与自动化应届生求职信
2013/11/16 职场文书
新三好学生主要事迹
2014/01/23 职场文书
会计求职信
2014/05/29 职场文书
生产车间标语
2014/06/11 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
新兵入伍决心书
2015/09/22 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL