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 相关文章推荐
快速保存网页中所有图片的方法
Jun 23 Javascript
JavaScript 对象模型 执行模型
Oct 15 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
jquery 设置style:display的方法
Jan 29 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
清除输入框内的空格
Dec 21 Javascript
原生js实现节日时间倒计时功能
Jan 18 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 Javascript
基于JavaScript实现年月日三级联动
Jun 22 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下使用iconv需要注意的问题
2010/11/20 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
php权重计算方法代码分享
2014/01/09 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
vue中格式化时间过滤器代码实例
2019/04/17 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
PHP面试题大全
2015/10/16 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
师说教学反思
2014/02/07 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
企业职业病防治方案
2014/05/29 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers