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 相关文章推荐
InnerHtml和InnerText的区别分析
Mar 13 Javascript
总结Node.js中的一些错误类型
Aug 15 Javascript
Json按某个键的值进行排序
Dec 22 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
vue中实现移动端的scroll滚动方法
Mar 03 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
Mar 08 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
Aug 02 Javascript
浅析Vue.js中v-bind v-model的使用和区别
Dec 04 Javascript
jQuery实现ajax的嵌套请求案例分析
Feb 16 jQuery
Vue+Node实现的商城用户管理功能示例
Dec 23 Javascript
vue和H5 draggable实现拖拽并替换效果
Jul 29 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 socket方式提交的post详解
2008/07/19 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php简单获取目录列表的方法
2015/03/24 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
JS作用域链详解
2017/06/26 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
python实现报表自动化详解
2017/11/16 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
我的五年职业生涯规划
2014/01/23 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
社区务虚会发言材料
2014/10/20 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
考研英语辞职信
2015/05/13 职场文书
歼十出击观后感
2015/06/11 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL