vue实现axios图片上传功能


Posted in Javascript onAugust 20, 2019

vue中实现图片上传,我这里使用的是FormData通过axios向后台发送请求,从而实现图片的上传。

在发起请求的axios中一般用qs进行序列化,但是序列化之后,FormData就传送失败,所以要区别传送的数据类型。

经过多次摸索总结了以下经验,以供参考。

首先创建一个文件夹services ,里面有两个文件 index.js 和 api.js。

我们的qs序列化和数据拦截写在index.js中

import axios from "axios";
import config from "@/config";
import router from "@/router";
import validate from "@/util/validate";
import Qs from "qs";
const request = axios.create({
 baseURL: config.hostUrl,
 timeout: 52000,
 transformRequest: [
  (data) => {
   return data instanceof FormData ? data : Qs.stringify({ //此处的data类型判断为重要点,
    ...data
   });
  }
 ]
});
request.interceptors.request.use( //请求拦截
 config => {
  return config;
 },
 error => Promise.error(error)
);

request.interceptors.response.use(// 响应拦截器
 async function (res) {
   if (res.status === 200) {
    return Promise.resolve(res.data);
   } else {    
    return Promise.reject(res.data);
   }
  },
  async function (error) {
   const {
    response
   } = error;
   if (response) {   
    return Promise.reject(response);
   } else {    
   }
  }
);
export default request;

写好上面的代码在api.js 请求接口就无须做任何操作了,下面示例:

async upImgs(files) { // 我的相册图片上传    
    return (await request.post('/basis/uploadFile', files)).response
     },

页面调用接口

async file_up(event) {
   //图片预览
   try {
    let res = null;
    this.file = [...event.target.files];
    for (let i = 0, f; (f = this.file[i]); i++) {
     if (i >= 8 || this.imgs.length >= 8) {
      return;
     }
     let fileImg = new FormData();
     fileImg.append("file", f);
     res = await this.$api.upImgs(fileImg); //这里是调用api处, 此处为多图上传,供参考
     if (res.result) {
      this.imgs.push(res.result.absoluteFilePath);
     }
    }
   } catch (err) {
    this.$toast({
     message: err.message,
     duration: 1200
    });
   }
  }

是不是很简单呀!反正我是实现了,有问题可以讨论下哦。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE下写xml文件的两种方式(fso/saveAs)
Aug 05 Javascript
jquery日历控件实现方法分享
Mar 07 Javascript
jQuery简单几行代码实现tab切换
Mar 10 Javascript
浅谈$(document)和$(window)的区别
Jul 15 Javascript
老生常谈JavaScript中的this关键字
Oct 01 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
js正则表达式验证表单【完整版】
Mar 06 Javascript
js判断手机系统是android还是ios
Mar 07 Javascript
javascript实现数据双向绑定的三种方式小结
Mar 09 Javascript
Javascript实现数组中的元素上下移动
Apr 28 Javascript
vue如何安装使用Quill富文本编辑器
Sep 21 Javascript
Javascript Symbol原理及使用方法解析
Oct 22 Javascript
扫微信小程序码实现网站登陆实现解析
Aug 20 #Javascript
vue+element-ui+axios实现图片上传
Aug 20 #Javascript
vue element upload实现图片本地预览
Aug 20 #Javascript
JS中的算法与数据结构之集合(Set)实例详解
Aug 20 #Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 #Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 #Javascript
ES6中Symbol、Set和Map用法详解
Aug 20 #Javascript
You might like
PHP 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
javascript getElementsByTagName
2011/01/31 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
javascript每日必学之继承
2016/02/23 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
vue实现通讯录功能
2018/07/14 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
跟老齐学Python之开始真正编程
2014/09/12 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
实习生自荐信范文分享
2013/11/27 职场文书
自荐书模板
2013/12/19 职场文书
教育孩子心得体会
2014/01/01 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
公司委托书格式
2014/08/01 职场文书
励志演讲稿大全
2014/08/21 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers