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 相关文章推荐
一些mootools的学习资源
Feb 07 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
基于JavaScript创建动态Dom
Dec 08 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 Javascript
JavaScript实现数值自动增加动画
Dec 28 Javascript
JS设计模式之命令模式概念与用法分析
Feb 06 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
小程序自定义日历效果
Dec 29 Javascript
vue-cli和v-charts实现可视化图表过程解析
Oct 08 Javascript
vue动态禁用控件绑定disable的例子
Oct 28 Javascript
Node.js API详解之 console模块用法详解
May 12 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
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
python命令行工具Click快速掌握
2019/07/04 Python
python支持多线程的爬虫实例
2019/12/21 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
Python自动创建Excel并获取内容
2020/09/16 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
香港士多网上超级市场:Ztore
2021/01/09 全球购物
单位人事专员介绍信
2014/01/11 职场文书
二手书店创业计划书
2014/01/16 职场文书
《雷雨》教学反思
2014/02/20 职场文书
创建青年文明号材料
2014/05/09 职场文书
小学班级口号
2014/06/09 职场文书
药店促销活动策划方案
2014/08/24 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
法律意见书范本
2015/06/04 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python