vue+axios实现文件下载及vue中使用axios的实例


Posted in Javascript onSeptember 21, 2018

功能:点击导出按钮,提交请求,下载excel文件;

第一步:跟后端童鞋确认交付的接口的response header设置了

vue+axios实现文件下载及vue中使用axios的实例

以及返回了文件流。

第二步:修改axios请求的responseType为blob,以post请求为例:

axios({
  method: 'post',
  url: 'api/user/',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  },
  responseType: 'blob'
}).then(response => {
  this.download(response)
}).catch((error) => {

})

第三步:请求成功,拿到response后,调用download函数(创建a标签,设置download属性,插入到文档中并click)

methods: {
  // 下载文件
  download (data) {
    if (!data) {
      return
    }
    let url = window.URL.createObjectURL(new Blob([data]))
    let link = document.createElement('a')
    link.style.display = 'none'
    link.href = url
    link.setAttribute('download', 'excel.xlsx')

    document.body.appendChild(link)
    link.click()
  }
}

下面在通过实例代码看下vue中使用axios

1.安装axios

npm:

$ npm install axios -S

cdn:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

2.配置axios

在项目中新建api/index.js文件,用以配置axios

api/index.js

import axios from 'axios';
let http = axios.create({
 baseURL: 'http://localhost:8080/',
 withCredentials: true,
 headers: {
  'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
 },
 transformRequest: [function (data) {
  let newData = '';
  for (let k in data) {
   if (data.hasOwnProperty(k) === true) {
    newData += encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) + '&';
   }
  }
  return newData;
 }]
});
function apiAxios(method, url, params, response) {
 http({
  method: method,
  url: url,
  data: method === 'POST' || method === 'PUT' ? params : null,
  params: method === 'GET' || method === 'DELETE' ? params : null,
 }).then(function (res) {
  response(res);
 }).catch(function (err) {
  response(err);
 })
}
export default {
 get: function (url, params, response) {
  return apiAxios('GET', url, params, response)
 },
 post: function (url, params, response) {
  return apiAxios('POST', url, params, response)
 },
 put: function (url, params, response) {
  return apiAxios('PUT', url, params, response)
 },
 delete: function (url, params, response) {
  return apiAxios('DELETE', url, params, response)
 }
}

这里的配置了POST、GET、PUT、DELETE方法。并且自动将JSON格式数据转为URL拼接的方式

同时配置了跨域,不需要的话将withCredentials设置为false即可

并且设置了默认头部地址为:http://localhost:8080/,这样调用的时候只需写访问方法即可

3.使用axios

注:PUT请求默认会发送两次请求,第一次预检请求不含参数,所以后端不能对PUT请求地址做参数限制

首先在main.js中引入方法

import Api from './api/index.js';
Vue.prototype.$api = Api;

然后在需要的地方调用即可

this.$api.post('user/login.do(地址)', {
  "参数名": "参数值"
}, response => {
   if (response.status >= 200 && response.status < 300) {
    console.log(response.data);\\请求成功,response为成功信息参数
   } else {
    console.log(response.message);\\请求失败,response为失败信息
   }
});

总结

以上所述是小编给大家介绍的vue+axios实现文件下载及vue中使用axios的实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js动态为代码着色显示行号
May 29 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
javascript实现日期按月份加减
May 15 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
js实现三张图(文)片一起切换的banner焦点图
Aug 25 Javascript
js带点自动图片轮播幻灯片特效代码分享
Sep 07 Javascript
Javascript闭包实例详解
Nov 29 Javascript
jQuery 中的 DOM 操作
Apr 26 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 Javascript
JQuery判断正整数整理小结
Aug 21 jQuery
JavaScript使用ul中li标签实现删除效果
Apr 15 Javascript
ES11新增的这9个新特性,你都掌握了吗
Oct 15 Javascript
vue-rx的初步使用教程
Sep 21 #Javascript
基于Vue 服务端Cookies删除的问题
Sep 21 #Javascript
Vue中插入HTML代码的方法
Sep 21 #Javascript
node.js调用C++函数的方法示例
Sep 21 #Javascript
Vue中Quill富文本编辑器的使用教程
Sep 21 #Javascript
vue单页应用在页面刷新时保留状态数据的方法
Sep 21 #Javascript
vue如何安装使用Quill富文本编辑器
Sep 21 #Javascript
You might like
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
php集成开发环境详解
2019/09/24 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
javascript中this关键字详解
2016/12/12 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
python模块如何查看
2020/06/16 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
打造完美自荐信
2014/01/24 职场文书
理财学专业自荐书
2014/06/28 职场文书
药店促销活动策划方案
2014/08/24 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
Java设计模式之代理模式
2022/04/22 Java/Android