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 相关文章推荐
页面使用密码保护代码
Apr 10 Javascript
JavaScript函数模式详解
Nov 07 Javascript
JS实现让网页背景图片斜向移动的方法
Feb 25 Javascript
微信小程序 教程之引用
Oct 18 Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
vue2实现数据请求显示loading图
Nov 28 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
vuex实现及简略解析(小结)
Mar 01 Javascript
前端Electron新手入门教程详解
Jun 21 Javascript
js实现头像上传并且可预览提交
Dec 25 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
第十三节--对象串行化
2006/11/16 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
php实现数字补零的方法总结
2018/09/12 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
Python中的面向对象编程详解(下)
2015/04/13 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
Python科学画图代码分享
2017/11/29 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
优秀教师个人材料
2014/12/15 职场文书
MySQL数据库事务的四大特性
2022/04/20 MySQL
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技