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 相关文章推荐
写入cookie的JavaScript代码库 cookieLibrary.js
Oct 24 Javascript
关于可运行代码无法正常执行的使用说明
May 13 Javascript
DWZ刷新dialog解决方法
Mar 03 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
Apr 29 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
Jun 24 Javascript
AngularJS Bootstrap详细介绍及实例代码
Jul 28 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
jQuery extend()详解及简单实例
May 06 jQuery
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
Jquery使用each函数实现遍历及数组处理
Jul 14 jQuery
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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Python类的继承和多态代码详解
2017/12/27 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python实现读取txt文件并转换为excel的方法示例
2018/05/17 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
Python3 assert断言实现原理解析
2020/03/02 Python
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
早会主持词
2014/03/17 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
关于美容院的活动方案
2014/08/14 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
Python各协议下socket黏包问题原理
2022/04/12 Python