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 相关文章推荐
创建一个复制UBB软件信息的链接或按钮的js代码
Jan 06 Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
jQuery Mobile 触摸事件实例
Jun 04 Javascript
利用angular.copy取消变量的双向绑定与解析
Nov 25 Javascript
JavaScript易错知识点整理
Dec 05 Javascript
写jQuery插件时的注意点
Feb 20 Javascript
node实现简单的反向代理服务器
Jul 26 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
通过一个简单的例子学会vuex与模块化
Nov 22 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
js代码规范之Eslint安装与配置详解
Sep 08 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验证码实现代码
2014/05/10 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
试用期转正员工自我评价
2014/09/18 职场文书
员工工作自我评价
2014/09/26 职场文书
鸟的天堂导游词
2015/01/31 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
幼儿园元旦主持词
2015/07/06 职场文书