最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

通过vue.js使用axios实现下载功能(详细教程)

来源:动视网 责编:小OO 时间:2020-11-27 19:42:42
文档

通过vue.js使用axios实现下载功能(详细教程)

本文主要来源于知乎一个回答,这里红色部分做了自己的处理,虽然自己的少,可是很有用的几句代码哦。只好回答一下axios如何拦截get请求并下载文件的了。Ajax无法下载文件的原因。浏览器的GET(frame、a)和POST(form)请求具有如下特点。response会交由浏览器处理。response内容可以为二进制文件、字符串等。Ajax请求具有如下特点。response会交由Javascript处理。response内容仅可以为字符串。因此,Ajax本身无法触发浏览器的下载功能。Axios拦截请求并实现下载。为了下载文件,我们通常会采用以下步骤。发送请求;获得response。通过response判断返回是否为文件。如果是文件则在页面中插入frame。可以为axios添加一个拦截器。
推荐度:
导读本文主要来源于知乎一个回答,这里红色部分做了自己的处理,虽然自己的少,可是很有用的几句代码哦。只好回答一下axios如何拦截get请求并下载文件的了。Ajax无法下载文件的原因。浏览器的GET(frame、a)和POST(form)请求具有如下特点。response会交由浏览器处理。response内容可以为二进制文件、字符串等。Ajax请求具有如下特点。response会交由Javascript处理。response内容仅可以为字符串。因此,Ajax本身无法触发浏览器的下载功能。Axios拦截请求并实现下载。为了下载文件,我们通常会采用以下步骤。发送请求;获得response。通过response判断返回是否为文件。如果是文件则在页面中插入frame。可以为axios添加一个拦截器。


下面我就为大家分享一篇vue.js 使用axios实现下载功能的示例,具有很好的参考价值,希望对大家有所帮助。

本文主要来源于知乎一个回答,这里红色部分做了自己的处理,虽然自己的少,可是很有用的几句代码哦

只好回答一下axios如何拦截get请求并下载文件的了。

Ajax无法下载文件的原因

浏览器的GET(frame、a)和POST(form)请求具有如下特点:

response会交由浏览器处理

response内容可以为二进制文件、字符串等

Ajax请求具有如下特点:

response会交由Javascript处理

response内容仅可以为字符串

因此,Ajax本身无法触发浏览器的下载功能。

Axios拦截请求并实现下载

为了下载文件,我们通常会采用以下步骤:

发送请求

获得response

通过response判断返回是否为文件

如果是文件则在页面中插入frame

利用frame实现浏览器的get下载

我们可以为axios添加一个拦截器:

import axios from 'axios'
// download url
const downloadUrl = url => {
 let iframe = document.createElement('iframe')
 iframe.style.display = 'none'
 iframe.src = url
 iframe.onload = function () {
 document.body.removeChild(iframe)
 }
 document.body.appendChild(iframe)
}
// Add a response interceptor
axios.interceptors.response.use(c=> {
 // 处理excel文件
 if (res.headers && (res.headers['content-type'] === 'application/x-msdownload' || res.headers['content-type'] === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')) {
 downloadUrl(res.request.responseURL)
 
 <span style="color:#ff0000;"> res.data='';
 res.headers['content-type'] = 'text/json'
 return res;</span>
 }
 ...
 return res;
}, error => {
 <span style="color:#ff0000;">// Do something with response error
 return Promise.reject(error.response.data || error.message)</span>
})
export default axios

之后我们就可以通过axios中的get请求下载文件了。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

nodejs实现超简单生成二维码的方法

nodejs+mongodb aggregate级联查询操作示例

解决vue页面DOM操作不生效的问题

文档

通过vue.js使用axios实现下载功能(详细教程)

本文主要来源于知乎一个回答,这里红色部分做了自己的处理,虽然自己的少,可是很有用的几句代码哦。只好回答一下axios如何拦截get请求并下载文件的了。Ajax无法下载文件的原因。浏览器的GET(frame、a)和POST(form)请求具有如下特点。response会交由浏览器处理。response内容可以为二进制文件、字符串等。Ajax请求具有如下特点。response会交由Javascript处理。response内容仅可以为字符串。因此,Ajax本身无法触发浏览器的下载功能。Axios拦截请求并实现下载。为了下载文件,我们通常会采用以下步骤。发送请求;获得response。通过response判断返回是否为文件。如果是文件则在页面中插入frame。可以为axios添加一个拦截器。
推荐度:
标签: 下载 VUE 教程
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top