欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue項(xiàng)目利用axios請求接口下載excel

 更新時(shí)間:2020年11月17日 17:16:07   作者:趣果有間  
這篇文章主要為大家詳細(xì)介紹了Vue項(xiàng)目利用axios請求接口下載excel,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Vue項(xiàng)目利用axios請求接口下載excel的具體代碼,供大家參考,具體內(nèi)容如下

據(jù)我了解的前端的下載方式有三種,第一種是通過a標(biāo)簽來進(jìn)行下載,第二種時(shí)候通過window.location來下載,第三種是通過請求后臺的接口來下載,今天就來記錄一下這三種下載方式。

方法一:通過a標(biāo)簽

// href為文件的存儲(chǔ)路徑或者地址,download為問文件名
<a href="/images/logo.jpg" rel="external nofollow" download="logo" />

優(yōu)點(diǎn):簡單方便。
缺點(diǎn):這種下載方式只支持Firefox和Chrome不支持IE和Safari,兼容性不夠好。

方法二:通過window.location

window.location = 'http://127.0.0.1:8080/api/download?name=xxx&type=xxx'

優(yōu)點(diǎn):簡單方便。
缺點(diǎn):只能進(jìn)行g(shù)et請求,當(dāng)有token校驗(yàn)的時(shí)候不方便。

方法三:通過請求后臺接口

// download.js
import axios from 'axios'

export function download(type, name) {
 axios({
 method: 'post',
 url: 'http://127.0.0.1:8080/api/download',
 // headers里面設(shè)置token
 headers: {
 loginCode: 'xxx',
 authorization: 'xxx'
 },
 data: {
 name: name,
 type: type
 },
 // 二進(jìn)制流文件,一定要設(shè)置成blob,默認(rèn)是json
 responseType: 'blob'
 }).then(res => {
 const link = document.createElement('a')
 const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
 link.style.display = 'none'
 link.href = URL.createObjectURL(blob)
 link.setAttribute('download', `${name}.xlsx`)
 document.body.appendChild(link)
 link.click()
 document.body.removeChild(link)
 })
}
// download.java
@RequestMapping(value = "/api/download",produces = "application/octet-stream", method = RequestMethod.POST)
public void downloadTemplate(@RequestBody Map<String,Object> paramsMap, HttpServletResponse response) {
 try {
 if (paramsMap.get("type").equals("xxx") && paramsMap.get("name").equals("xxx")) {
 String[] str = new String[]{"區(qū)縣","所屬省份","所屬地市"};
 Workbook workbook = ExportExcel.exportExcel("行政區(qū)劃表模版", str, null, "yyyy-MM-dd");
 download(response, workbook, "CityDict");
 }
 } catch (Exception e) {
 e.printStackTrace();
 }
}

private void download(HttpServletResponse response, Workbook workbook, String fileName) {
 try {
 response.setContentType("application/octet-stream;charset=UTF-8;");
 response.addHeader("Content-Disposition", "attachment;fileName=" + fileName + ".xlsx");
 ByteArrayOutputStream by = new ByteArrayOutputStream();
 OutputStream osOut = response.getOutputStream();
 // 將指定的字節(jié)寫入此輸出流
 workbook.write(osOut);
 // 刷新此輸出流并強(qiáng)制將所有緩沖的輸出字節(jié)被寫出
 osOut.flush();
 // 關(guān)閉流
 osOut.close();
 } catch (IOException e) {
 LogUtils.getExceptionLogger().info("下載模板錯(cuò)誤:{}", e.getMessage());
 }
}

優(yōu)點(diǎn):可以在headers里面設(shè)置token,文件是java代碼中生成的,生成的文件比較靈活。
缺點(diǎn):實(shí)現(xiàn)起來比較復(fù)雜。

關(guān)于vue.js的學(xué)習(xí)教程,請大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程、Vue.js前端組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue Router添加全局$router屬性的示例詳解

    Vue Router添加全局$router屬性的示例詳解

    這篇文章主要介紹了Vue-Router-添加全局$router屬性,在 Vue 中有一個(gè) mixin 方法,這個(gè)方法會(huì)在每個(gè)組件創(chuàng)建之前被調(diào)用,我們可以在這個(gè)方法中將 VueRouter 實(shí)例掛載到 Vue 實(shí)例上,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 如何在Vue3中使用視頻庫Video.js實(shí)現(xiàn)視頻播放功能

    如何在Vue3中使用視頻庫Video.js實(shí)現(xiàn)視頻播放功能

    在Vue3項(xiàng)目中集成Video.js庫,可以創(chuàng)建強(qiáng)大的視頻播放功能,這篇文章主要介紹了如何在Vue3中使用視頻庫Video.js實(shí)現(xiàn)視頻播放功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 解決vue prop傳值default屬性如何使用,為何不生效的問題

    解決vue prop傳值default屬性如何使用,為何不生效的問題

    這篇文章主要介紹了解決vue prop傳值default屬性如何使用,為何不生效的問題。具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 詳解vue表單驗(yàn)證組件 v-verify-plugin

    詳解vue表單驗(yàn)證組件 v-verify-plugin

    本篇文章主要介紹了詳解vue表單驗(yàn)證組件 v-verify-plugin,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • 在vue-cli項(xiàng)目中如何使用swiper

    在vue-cli項(xiàng)目中如何使用swiper

    這篇文章主要介紹了在vue-cli項(xiàng)目中如何使用swiper問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 淺談實(shí)現(xiàn)在線預(yù)覽PDF的幾種解決辦法

    淺談實(shí)現(xiàn)在線預(yù)覽PDF的幾種解決辦法

    這篇文章主要介紹了淺談實(shí)現(xiàn)在線預(yù)覽PDF的幾種解決辦法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 基于Vue封裝實(shí)現(xiàn)全屏功能工具類

    基于Vue封裝實(shí)現(xiàn)全屏功能工具類

    在?Web?應(yīng)用程序中,有時(shí)需要為某些內(nèi)容提供全屏顯示的功能,本文將介紹如何使用?Vue.js?3?的?Composition?API?創(chuàng)建一個(gè)全屏功能的工具類,希望對大家有所幫助
    2024-03-03
  • Vue實(shí)現(xiàn)錄制屏幕并本地保存功能

    Vue實(shí)現(xiàn)錄制屏幕并本地保存功能

    這篇文章主要介紹了Vue實(shí)現(xiàn)錄制屏幕功能并本地保存,這里用的是用的是HBuilder?X開發(fā),結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 詳解如何在Vue3+TS的項(xiàng)目中使用NProgress進(jìn)度條

    詳解如何在Vue3+TS的項(xiàng)目中使用NProgress進(jìn)度條

    本文主要介紹了詳解如何在Vue3+TS的項(xiàng)目中使用NProgress進(jìn)度條,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Vue項(xiàng)目中對index.html中BASE_URL的配置方式

    Vue項(xiàng)目中對index.html中BASE_URL的配置方式

    這篇文章主要介紹了Vue項(xiàng)目中對index.html中BASE_URL的配置方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論