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 相关文章推荐
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
jquery怎样实现ajax联动框(二)
Mar 08 Javascript
js分页代码分享
Apr 28 Javascript
javascript实现切换td中的值
Dec 05 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
ES6新特性八:async函数用法实例详解
Apr 21 Javascript
MvcPager分页控件 适用于Bootstrap
Jun 03 Javascript
浅谈JS中的常用选择器及属性、方法的调用
Jul 28 Javascript
jQuery实现网页拼图游戏
Apr 22 jQuery
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 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
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
Python编程中装饰器的使用示例解析
2016/06/20 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
个人自我剖析材料
2014/09/30 职场文书
财务检查整改报告
2014/11/06 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
工作证明格式范文
2015/06/15 职场文书
七一晚会主持词
2015/06/29 职场文书
篮球拉拉队口号
2015/12/25 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫