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 相关文章推荐
JQueryEasyUI datagrid框架的基本使用
Apr 08 Javascript
Javascript高级技巧分享
Feb 25 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
js时钟翻牌效果实现代码分享
Jul 31 Javascript
JS+CSS简单树形菜单实现方法
Sep 12 Javascript
ES2015 Symbol 一种绝不重复的值
Dec 25 Javascript
jQuery插件ajaxFileUpload使用详解
Jan 10 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
微信小程序冒泡事件及其阻止方法实例分析
Dec 06 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 Javascript
js实现日历
Nov 07 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页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
python对html过滤处理的方法
2018/10/21 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
高校教师思想汇报
2014/01/11 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
导游词之桂林山水
2019/09/20 职场文书
mysql脏页是什么
2021/07/26 MySQL