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

 更新时间:2018年09月21日 14:22:53   作者:留给时间  
这篇文章主要介绍了vue+axios实现文件下载及vue中使用axios的实例,需要的朋友可以参考下

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

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

response header

以及返回了文件流。

第二步:修改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的实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 深入理解Vue的过度与动画

    深入理解Vue的过度与动画

    这篇文章主要为大家介绍了Vue的过度与动画,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • vue slot与传参实例代码讲解

    vue slot与传参实例代码讲解

    这篇文章主要介绍了vue slot与传参实例代码讲解,在文章末尾给大家介绍了vue 利用slot向父组件传值的方法,需要的朋友可以参考下
    2019-04-04
  • vue3+vite动态引入图片方式

    vue3+vite动态引入图片方式

    这篇文章主要介绍了vue3+vite动态引入图片方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • vue组件通信传值操作示例

    vue组件通信传值操作示例

    这篇文章主要介绍了vue组件通信传值操作,结合实例形式分析了vue.js父子组件通信及兄弟组件通信相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • 查找Vue中下标的操作(some和findindex)

    查找Vue中下标的操作(some和findindex)

    这篇文章主要介绍了查找Vue中下标的操作(some和findindex),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 解决vue中使用history.replaceState 更改url vue router 无法感知的问题

    解决vue中使用history.replaceState 更改url vue router 无法感知的问题

    这篇文章主要介绍了vue中使用history.replaceState 更改url vue router 无法感知的问题,本文给大家分享修复这个问题的方法,需要的朋友可以参考下
    2022-09-09
  • Vue实现table上下移动功能示例

    Vue实现table上下移动功能示例

    这篇文章主要介绍了Vue实现table上下移动功能,结合实例形式分析了vue.js针对table表格元素动态操作相关实现技巧,需要的朋友可以参考下
    2019-02-02
  • Vue3响应式对象Reactive和Ref的用法解读

    Vue3响应式对象Reactive和Ref的用法解读

    这篇文章主要介绍了Vue3响应式对象Reactive和Ref的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue 2.0 侦听器 watch属性代码详解

    Vue 2.0 侦听器 watch属性代码详解

    这篇文章主要介绍了Vue 2.0 侦听器 watch属性代码详解,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-06-06
  • Vue之Axios的异步通信详解

    Vue之Axios的异步通信详解

    这篇文章主要为大家详细介绍了Vue之Axios的异步通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论