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代码
Dec 15 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
onclick与listeners的执行先后问题详细解剖
Jan 07 Javascript
javascript中比较字符串是否相等的方法
Jul 23 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
Mar 13 Javascript
JavaScript动态添加style节点的方法
Jun 09 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
Aug 24 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 Javascript
js实现各浏览器全屏代码实例
Jul 03 Javascript
Vue登录注册并保持登录状态的方法
Aug 17 Javascript
uniapp实现横向滚动选择日期
Oct 21 Javascript
Vue路由权限控制解析
Nov 09 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中MVC的开发经验分享
2012/05/17 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
JS模块与命名空间的介绍
2013/03/22 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python基于SMTP协议发送邮件
2019/05/31 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
css3实现书本翻页效果的示例代码
2021/03/08 HTML / CSS
英国综合网上购物商城:The Hut
2018/07/03 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
全国文明单位申报材料
2014/05/31 职场文书
个人职业及收入证明
2014/10/13 职场文书
年会邀请函范文
2015/01/30 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
入党介绍人意见范文
2015/06/01 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js