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实现键盘方向键翻页功能的代码
Jun 03 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
Dec 12 Javascript
jQuery 复合选择器应用的几个例子
Sep 11 Javascript
javascript伸缩菜单栏实现代码分享
Nov 12 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
Feb 16 Javascript
jQuery实现图片轮播效果代码
Sep 27 Javascript
微信小程序 天气预报开发实例代码源码
Jan 20 Javascript
移动web开发之touch事件实例详解
Jan 17 Javascript
Nuxt配合Node在实际生产中的应用详解
Aug 07 Javascript
环形加载进度条封装(Vue插件版和原生js版)
Dec 04 Javascript
微信小程序顶部导航栏可滑动并选中放大
Dec 05 Javascript
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调用三种数据库的方法(3)
2006/10/09 PHP
php静态文件生成类实例分析
2015/01/03 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
新浪中用来显示flash的函数
2007/04/02 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python黑魔法之编码转换
2016/01/25 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
名片管理系统python版
2018/01/11 Python
python中abs&amp;map&amp;reduce简介
2018/02/20 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
Python画图高斯分布的示例
2019/07/10 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
初三政治教学反思
2014/01/30 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
2014年学校法制宣传日活动总结
2014/11/01 职场文书
2014年民警工作总结
2014/11/25 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
争先创优个人总结
2015/03/04 职场文书
2015年妇委会工作总结
2015/05/22 职场文书