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 相关文章推荐
很可爱的输入框
Aug 03 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
关于Javascript作用域链的八点总结
Dec 06 Javascript
js用闭包遍历树状数组的方法
Mar 19 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
Dec 03 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
深入学习AngularJS中数据的双向绑定机制
Mar 04 Javascript
Javascript之面向对象--封装
Dec 02 Javascript
使用BootStrap实现标签切换原理解析
Mar 14 Javascript
vue组件通信传值操作示例
Jan 08 Javascript
Vuex mutitons和actions初使用详解
Mar 04 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使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
javascript 页面只自动刷新一次
2009/07/10 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
js快速排序的实现代码
2013/12/08 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
AngularJS入门教程之模块化操作用法示例
2016/11/02 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
2021/01/12 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
奠基仪式主持词
2014/03/20 职场文书
爱心捐助倡议书
2014/05/19 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang
Spring Boot实现文件上传下载
2022/08/14 Java/Android