日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...

發布時間:2023/12/10 vue 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求

點擊導出下載表格對應的excel文件

在 vue 項目中,使用的 axios ,后臺 java 提供的 post 接口 api

實現

第一步,在 axios 請求中加入參數,表示接收的數據為二進制文件流

responseType: "blob"

第二步,在拿到數據流之后,把流轉為指定文件格式并創建a標簽,模擬點擊下載,實現文件下載功能

let blob = res.data

let reader = new FileReader()

reader.readAsDataURL(blob)

reader.onload = (e) => {

let a = document.createElement("a")

a.download = fileName

a.href = e.target.result

document.body.appendChild(a)

a.click()

document.body.removeChild(a)

}

問題

使用 axios 會出現無法拿到 java 后端給出的 Content-Disposition 中的文件名

注意的是,瀏覽器中可以看到header中有信息,但是無法通過 axios 的 res.header 獲取到

這種情況需要后端設置 header

Access-Control-Expose-Headers: Content-Disposition

有可能后端加了之后還是獲取不到,那么讓后端單獨加一個fileName字段即可

response.setContentType("multipart/form-data");

response.setCharacterEncoding("utf-8");

response.setHeader("Content-disposition", "attachment;filename=" + UUID.randomUUID().toString() + ".xlsx");

response.setHeader("FileName", UUID.randomUUID().toString() + ".xlsx");

response.setHeader("Access-Control-Expose-Headers", "FileName")

總結

完整的 axios 代碼

axios.post({

url:`url`,

method:`post`,

responseType: "blob"

}).then(res => {

let blob = res.data

let reader = new FileReader()

reader.readAsDataURL(blob)

reader.onload = (e) => {

let a = document.createElement("a")

a.download = `fileName.xlsx`

a.href = e.target.result

document.body.appendChild(a)

a.click()

document.body.removeChild(a)

}

})

ps:vue-axios的使用方法(簡單易懂)

1.vue-axios插件的安裝

使用 npm:

$ cnpm install axios

2.在main.js中添加(添加到原型鏈上)

import axios from "axios";

Vue.prototype.axios = axios;

完活,然后就可以隨便在任何組件開始用了,耶!^-^!

例子:

this.axios.post("http://ai.yiche.com/web/ability/nlu/standardTokenizer", {

"text": "動效如果有跟評審結論有出入的地方或者不清楚的地方,隨時溝通哈~"

}).then(function(res) {

console.log(res.data);

}).catch(function(err) {

if (err.response) {

console.log(err.response)

}

});

以上所述是小編給大家介紹的在vue中使用axios實現post方式獲取二進制流下載文件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對云海天教程網站的支持!

如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

總結

以上是生活随笔為你收集整理的vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。