VUE axios上传图片到七牛的实例代码


Posted in Javascript onJuly 28, 2017

浏览器上传图片到服务端,我用过两种方法:

1.本地图片转换成base64,然后通过普通的post请求发送到服务端。

操作简单,适合小图,以及如果想兼容低版本的ie没办法用此方法

2.通过form表单提交。

form表单提交图片会刷新页面,也可以时form绑定到一个隐藏的iframe上,可以实现无刷新提交数据。但是如果想传输多条form表单数据,需要写很多dom,同时还要写iframe,太麻烦。

目前感觉比较干净的办法就是通过axios的post请求,发送form数据到后台。

html部分,至于界面优化,可以把input file的opacity设置为0,点击其父容器,即触发file

<input class="file" name="file" type="file" accept="image/png,image/gif,image/jpeg" @change="update"/>

axios的post请求,发送form数据部分,这样就可以无刷新的提交form数据到后台

update(e){
     let file = e.target.files[0];      
     let param = new FormData(); //创建form对象
     param.append('file',file,file.name);//通过append向form对象添加数据
     param.append('chunk','0');//添加form表单中其他数据
     console.log(param.get('file')); //FormData私有类对象,访问不到,可以通过get判断值是否传进去
     let config = {
      headers:{'Content-Type':'multipart/form-data'}
     }; //添加请求头
     this.axios.post('http://upload.qiniu.com/',param,config)
     .then(response=>{
      console.log(response.data);
     })    
}

以下部分是扩展

vue开发环境下,上传图片到七牛

最近着手的约能人项目,需要上传图片到七牛,但是感觉只是简单的上传图片还需要引七牛的js,太麻烦了,就自己一切从简。实现逻辑:获取后台返回的七牛token,然后axios的post请求,发送form数据到七牛。

 七牛的token是其平台封装好的,直接在自己服务器配置就能获取到 在其官网上可以找到直接能用的代码  ,在七牛平台获取到后,返回给前台直接拿就好了

以下是直接上传图片到七牛,不需要安装七牛乱七八糟的js,只需要通过七牛的form表单上传就行了。

update(e){
     let file = e.target.files[0];
     let d = new Date();
     let type = file.name.split('.');
     let tokenParem = {
       'putPolicy':'{\"name\":\"$(fname)\",\"size\":\"$(fsize)\",\"w\":\"$(imageInfo.width)\",\"h\":\"$(imageInfo.height)\",\"hash\":\"$(etag)\"}',
       'key':'orderReview/'+d.getFullYear()+'/'+(d.getMonth()+1)+'/'+d.getDate()+'/'+d.valueOf()+'.'+type[type.length-1],
       'bucket':this.domain,//七牛的地址,这个是你自己配置的(变量)
     };
     let param = new FormData(); //创建form对象
     param.append('chunk','0');//断点传输
     param.append('chunks','1');
     param.append('file',file,file.name)
     console.log(param.get('file')); //FormData私有类对象,访问不到,可以通过get判断值是否传进去
     let config = {
      headers:{'Content-Type':'multipart/form-data'}
     };
    //先从自己的服务端拿到token
     this.axios.post(api.uploadToken,qs.stringify(tokenParem))
      .then(response=>{
        this.token = response.data.uploadToken;
        param.append('token',this.token);
        if(this.images.length>8){
          alert('不能超过9张');
          return;
        }
        this.uploading(param,config,file.name);//然后将参数上传七牛
        return;
      })
   },
   uploading(param,config,pathName){
    this.axios.post('http://upload.qiniu.com/',param,config)
     .then(response=>{
      console.log(response.data);
      let localArr = this.images.map((val,index,arr)=>{
       return arr[index].localSrc;
      })
      if(!~localArr.indexOf(pathName)){
       this.images.push({'src':this.showUrl+response.data.key,'localSrc':pathName});
      }else{
        alert('已上传该图片');
      }
     })
   },

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

Javascript 相关文章推荐
准确获得页面、窗口高度及宽度的JS
Nov 26 Javascript
Javascript实现页面跳转的几种方式分享
Oct 26 Javascript
常规表格多表头查询示例
Feb 21 Javascript
简单介绍JavaScript的变量和数据类型
Jun 03 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
Nov 26 Javascript
JavaScript动态插入CSS的方法
Dec 10 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
Vuex 快速入门(简单易懂)
Sep 20 Javascript
javascript中数组的常用算法深入分析
Mar 12 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
jQuery dateRangePicker插件使用方法详解
Jul 28 #jQuery
完美实现js拖拽效果 return false用法详解
Jul 28 #Javascript
webpack 2的react开发配置实例代码
Jul 28 #Javascript
基于AngularJS实现表单验证功能
Jul 28 #Javascript
AngularJS service之select下拉菜单效果
Jul 28 #Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 #Javascript
bootstrap datepicker插件默认英文修改为中文
Jul 28 #Javascript
You might like
php daodb插入、更新与删除数据
2009/03/19 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
php封装实现钉钉机器人报警接口的示例代码
2020/08/08 PHP
js身份证验证超强脚本
2008/10/26 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
Python Property属性的2种用法
2015/06/21 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
了解AppleTalk协议吗
2014/04/01 面试题
关于毕业的中学校园广播稿
2014/01/26 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
八达岭长城导游词
2015/01/30 职场文书
酒店辞职书范文
2015/02/26 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
小学数学教学反思范文
2016/02/16 职场文书
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS
Python实现双向链表
2022/05/25 Python