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 相关文章推荐
Javascript实现网络监测的方法
Jul 31 Javascript
js全选按钮的实现方法
Nov 17 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
Sep 02 Javascript
jQuery简单倒计时效果完整示例
Sep 20 Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
js实现前端分页页码管理
Jan 06 Javascript
Bootstrap输入框组件使用详解
Jun 09 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
vue 项目build错误异常的解决方法
Apr 22 Javascript
微信网页登录逻辑与实现方法
Apr 29 Javascript
react ant Design手动设置表单的值操作
Oct 31 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实现文件上传二法
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php创建session的方法实例详解
2015/01/27 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
php中array_slice和array_splice函数解析
2016/10/18 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
PHP反射学习入门示例
2019/06/14 PHP
js实现简单登录功能的实例代码
2013/11/09 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
vue 插件的方法代码详解
2019/06/06 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
Python实现注册、登录小程序功能
2018/09/21 Python
用Python实现数据的透视表的方法
2018/11/16 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
Django实现内容缓存实例方法
2020/06/30 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
Android面试题附答案
2014/12/08 面试题
工程造价自荐信
2013/10/09 职场文书
设计师个人求职信范文
2014/02/02 职场文书
护士个人自我鉴定
2014/03/24 职场文书
幸福中国演讲稿
2014/09/12 职场文书
开票员岗位职责
2015/02/12 职场文书
表扬信范文
2015/05/04 职场文书
学生退学证明
2015/06/23 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python
如何优化vue打包文件过大
2022/04/13 Vue.js