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 相关文章推荐
Javascript 表单之间的数据传递代码
Dec 04 Javascript
jquery实现居中弹出层代码
Aug 25 Javascript
JS中setTimeout()的用法详解
Apr 14 Javascript
Jquery实现纵向横向菜单
Jan 24 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
May 10 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
Oct 13 Javascript
基于vuejs实现一个todolist项目
Apr 11 Javascript
浅谈Vue数据响应
Nov 05 Javascript
jQuery实现的简单歌词滚动功能示例
Jan 07 jQuery
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 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常用图片处理类
2016/03/16 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
详解jquery uploadify 上传文件
2013/11/09 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
Python封装shell命令实例分析
2015/05/05 Python
python实现感知器
2017/12/19 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python版本单链表实现代码
2018/09/28 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
python绘制直方图和密度图的实例
2019/07/08 Python
python里运用私有属性和方法总结
2019/07/08 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
Django缓存系统实现过程解析
2019/08/02 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
会计电算化应届生自荐信
2014/02/25 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
学习十八大演讲稿
2014/09/15 职场文书
离职报告格式
2014/11/04 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis