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

歡迎訪問 生活随笔!

生活随笔

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

HTML

前端导出文件,后端返回文件流过大直接干崩溃

發布時間:2023/12/10 HTML 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端导出文件,后端返回文件流过大直接干崩溃 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前端導出文件

  • 前端很常見的導出需求 導出world xlsx 甚至是zip

  • 在我這個項目中是導出圖片,圖片量還是蠻大的,直接干崩潰了

  • 我們這里是后端同學直接返回的是文件流

  • 通過調用接口拿到文件流后直接調用下面的方法

    export function exportZip(res, name) {const blob = new Blob([res.data], {type: 'application/zip'})const reader = new FileReader()reader.readAsDataURL(blob)reader.onload = function (e) {const a = document.createElement('a')a.download = `${name}.zip`a.href = e.target.result// 兼容觸發clickconst evt = document.createEvent('MouseEvents')evt.initEvent('click', true, true)a.dispatchEvent(evt)} }

    然后就出現上面的崩潰,分析后是因為文件流太大導致的,解決辦法如下:

  • 直接讓后端同學將zip準備好,調用接口返回的是一個地址 我們通過訪問地址來下載zip

    <a @click="downFile()">{{文件名稱}}</a>//下載方法downZip () {let a = document.createElement('a')a.href = '這里是后端同學返回的地址'a.click()}```
  • 我們可以接收較大的文檔流—在 github 上面找到了大神寫的一個庫

    • 首先安裝(基于Vue,也可以去訪問gitHub上下載:https://github.com/eligrey/FileSaver.js)

      npm install file-saver --save

    • 引入方法

      import { saveAs } from ‘file-saver’;

    • 通過調用上面引入的方法來接收很大的文件流 (修改我們上面的exportZip方法如下)

      export function exportZip(res, name) {const blob = new Blob([res.data], {type: 'application/zip'})saveAs(blob, name) }
  • 再試試就搞定了

    總結

    以上是生活随笔為你收集整理的前端导出文件,后端返回文件流过大直接干崩溃的全部內容,希望文章能夠幫你解決所遇到的問題。

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