angularJS+Ionic在移动端进行图片上传(附代码)

这次给大家带来angularJS+Ionic在移动端进行图片上传(附代码),angularJS+Ionic在移动端进行图片上传的注意事项有哪些,下面就是实战案例,一起来看一下。

前端开发中经常会碰到图片上传的问题,网上的解决办法很多,可是有些图片上传的插件会有一些附属的插件,因此因为一个图片上传的问题可能额需要引入其他插件到项目中,久而久之项目会不伦不类,有时候插件之间也会有一些冲突,所以我们可以自己写一个图片上传的方法。

今天的demo是帮朋友做的一个移动端微信公众号项目,项目架构采用angular+ionic,因为对dom的操作jQuery会方便很多,但是jQuery比较厚重,所以最后选择用轻量级的zepto来对项目dom进行操作。

js结构:

function1:

$scope.imgList = [];$scope.setUploader = function () {  var files = document.getElementById('photo');  files.click();  $(files).unbind().on('change',function (e) {    var file = e.target.value;    if (!/.(jpg|jpeg|png|GIF|JPG|png)$/.test(file)) {      common.toast('图片类型必须是jpeg,jpg,png中的一种');      return false;    };    fsubmit();    readAsBinaryString();  });};

登录后复制

function2:

function fsubmit() {  var itemImg = {};  var form=document.getElementById("form1");  console.log('form',form)  var formData=new FormData(form);  formData.append('wxdesigner_sid',$.fn.cookie('wxdesigner_sid'));  formData.append('id',$scope.masterInfo.id);  formData.append('pc','1');  var oReq = new XMLHttpRequest();  oReq.onreadystatechange=function(){    if(oReq.readyState==4){      if(oReq.status==200){        var json=JSON.parse(oReq.responseText);        console.log(json)        if(json.Success) {          itemImg = json.Data;          $scope.imgList=itemImg;          console.log($scope.imgList)          $scope.$apply();          itemImg = {};        }      }    }  };  console.log(oReq)  console.log(formData)  oReq.open("POST", common.api+"Wxdesigner/Designer/uploadworks");  oReq.send(formData);  return false;};//判断浏览器是否支持FileReader接口if(typeof FileReader == 'undefined'){  //使选择控件不可操作  file.setAttribute("disabled","disabled");}

登录后复制

function3:

function readAsBinaryString(){  var file = document.getElementById('photo').files[0];  console.log(file)  var reader = new FileReader();  //将文件以二进制形式读入页面  reader.readAsDataURL(file);  reader.onload=function(f){    $scope.masterInfo.thumblist.push(f.currentTarget.result)    console.log($scope.masterInfo)    $scope.$apply()  }}

登录后复制

整个图片上传的dom层很简单,一个form表单加上一个触发表单的函数(function1)。在function1中获取到的点击事件,在选择图片的时候会做个判断,如果超出支持的图片类型围的时候做个提醒。

然后在后面调用function2和function3。

在function2中获取form表单对象,然后创建一个FormData对象,将获取到的form表单传入FormData,然后append一些上传图片的参数。再创建一个new XMLHttpRequest对象,然后open发送XHR请求接口,send(formData)传递参数给接口。

到这个时候接口发送成功。

 这里的四个参数是formData中的四个参数

接口相应成功。

到这里有问题,图片上传成功写入数据库了,可是这时候需要在本地展示给用户看但是网页又不能直接访问设备本地的图片,因此我们需要FIleReader对象来对上传的图片文件读取为DataURL来展示在本地。

首先New 一个FileReader对象,然后将获取到的input file对象传入FileReader的 readAsDataURL()方法,此方法是将文件读取为DataURL的。

然后调用FileReader的onload方法,此方法的result会有转换之后的url,因此我们可以获取到此url,实际上是经过base64编码的。然后push到图片列表的最后

到此解决了问题,前端展示了本地的图片并且图片也写入了数据库,当页面再次刷新的时候拿到的是数据库中的数据

当然这里只是一个方法,移动端图片上传的插件比比皆是,甚至各种拖拽上传的图片上传插件也很多,此处适合项目中不用引入插件的图片上传的简单功能。  

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

Vue-Router的滚动行为使用详解

Particles.js实现粒子动态背景动画

Vue-router的路由元信息使用详解

以上就是angularJS+Ionic在移动端进行图片上传(附代码)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2771476.html

(0)
上一篇 2025年3月8日 12:58:27
下一篇 2025年3月8日 12:58:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Js+Canvas做出图片压缩

    这次给大家带来Js+Canvas做出图片压缩,Js+Canvas做出图片压缩的注意事项有哪些,下面就是实战案例,一起来看一下。 /* * 图片压缩 * img 原始图片 * width 压缩后的宽度 * height 压缩后的高度 * ra…

    编程技术 2025年3月8日
    200
  • js高效率的与服务器时间同步

    这次给大家带来js高效率的与服务器时间同步,js高效率与服务器时间同步的注意事项有哪些,下面就是实战案例,一起来看一下。 方案1:每次倒计时去服务端请求时间 //开启定时器var timer = setInterval(function (…

    编程技术 2025年3月8日
    200
  • js数组如何实现权重概率排序

    这次给大家带来js数组如何实现权重概率排序,js数组实现权重概率排序的注意事项有哪些,下面就是实战案例,一起来看一下。 今天写了一个js控制页面轮播的功能,如果仅仅使用队列很简单,但是考虑到为每一个页面分配权重的是否变的异常复杂,使用swi…

    编程技术 2025年3月8日
    200
  • Vue.js中使用Mixins步奏详解

    这次给大家带来Vue.js中使用Mixins步奏详解,Vue.js中使用Mixins的注意事项有哪些,下面就是实战案例,一起来看一下。 一个很常见的场景: 有两个非常相似的组件, 它们拥有非常相似的基本功能, 但是它们之间又有足够的不同的地…

    编程技术 2025年3月8日
    200
  • JS面向对象的使用详解

    这次给大家带来JS面向对象的使用详解,JS面向对象使用的注意事项有哪些,下面就是实战案例,一起来看一下。 数据类型 在JavaScript中,数据类型分为两类: 原始类型 保存一些简单数据,如true,5等。JavaScript共有5中原始…

    编程技术 2025年3月8日
    200
  • clipboard.js实现复制功能步奏详解

    这次给大家带来clipboard.js实现复制功能步奏详解,clipboard.js实现复制功能的注意事项有哪些,下面就是实战案例,一起来看一下。 最近在工作中有一个需求,就是需要使用一个按钮实现相应内容的复制。在网上找了很多解决方案,最后…

    编程技术 2025年3月8日
    200
  • 用requireJS添加返回顶部功能

    这次给大家带来用requireJS添加返回顶部功能,用requireJS添加返回顶部功能的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了requireJS模块化实现返回顶部功能的方法。分享给大家供大家参考,具体如下: 引用…

    编程技术 2025年3月8日
    200
  • AngularJS注册表单验证的步奏详解

    这次给大家带来AngularJS注册表单验证的步奏详解,AngularJS注册表单验证的注意事项有哪些,下面就是实战案例,一起来看一下。 //email验证 $(function(){ //input标签获取焦点/失去焦点时调用方法 $(“…

    编程技术 2025年3月8日
    200
  • Node.js往MySQL大量注入数据

    这次给大家带来Node.js往MySQL大量注入数据,Node.js往MySQL大量注入数据的Node.js有哪些,下面就是实战案例,一起来看一下。 1.数据库连接 var mysql = require(‘mysql’);// 数据库信息…

    编程技术 2025年3月8日
    200
  • 原生JS做出一个音乐播放器

    这次给大家带来原生JS做出一个音乐播放器,原生JS做出一个音乐播放器的注意事项有哪些,下面就是实战案例,一起来看一下。 前  言          最近在复习JS,觉得音乐播放器是个挺有意思的东西,今天就来用我们最原生的JS写一个小小的音乐…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论