国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

nodejs(officegen)+vue(axios)在客戶端導出word文檔的方法

2019-11-19 13:22:51
字體:
來源:轉載
供稿:網友

前言

我的項目中有一個需求:點擊按鈕生成可編輯的word文檔訂單詳情的信息

我使用的前端框架是Vue.js、后臺使用的是node.js

node.js生成和導出word文檔我參考的是下面這兩篇文章,寫的挺好的(github上的那篇里面還有node.js生成word、excel、ppt的example,需要詳細的可以看里面)

http://www.survivalescaperooms.com/article/144769.htm

https://github.com/Ziv-Barber...

問題

node.js上面這兩篇文章已經講的很不錯了,但是我在實現的過程中還是出現了一個問題:我在后端能生成一個完整的word文檔,但是在返回前端下載的時候遇到了問題。一開始我一直都以為node.js后臺方面的代碼導致的,畢竟我是第一次寫嘛^_^,但是在不斷的測試中我發現:

1、點擊按鈕用vue里面的axios請求localhost:8081/order/getDoc沒有直接生成word文檔,把返回的數據console.log(res)出來查看,發現得到的數據是一堆的亂碼的字符串

2、但是在瀏覽器地址欄中請求同樣的后端接口,發現能生成一個整個的word文檔!

問題根源

有了頭緒我就開始上網搜尋,我發現,ajax的接受類型只能是string字符串,不是流類型,所以無法實現文件下載。ajax方式請求的數據只能存放在javascipt內存空間,可以通過javascript訪問,但是無法保存到硬盤,因為javascript不能直接和硬盤交互,否則將是一個安全問題。

axios是第一個第三方的ajax庫,所以同理。

解決方法

解決的方法我參考了一篇文章前端axios下載excel(二進制) http://www.survivalescaperooms.com/article/144771.htm

解決方法:利用了blob對象,Blob對象可以看做是存放二進制數據的容器,它是一個二進制大對象,是一個可以存儲二進制文件的容器。

methods:{  handleClick(row){  console.log(row);  var orderId = row.orderId + row.oid.toString();  console.log(orderId);  this.$ajax({  method:"get",  url:"http://localhost:8081/order/getDoc",  responseType:'blob'  }).then((res)=>{  //這里res.data是返回的blob對象  var blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8'}); //application/vnd.openxmlformats-officedocument.wordprocessingml.document這里表示doc類型  var downloadElement = document.createElement('a');  var href = window.URL.createObjectURL(blob); //創建下載的鏈接  downloadElement.href = href;  downloadElement.download = orderId+'.docx'; //下載后文件名  document.body.appendChild(downloadElement);  downloadElement.click(); //點擊下載  document.body.removeChild(downloadElement); //下載完成移除元素  window.URL.revokeObjectURL(href); //釋放掉blob對象  })  } }

總結

以上所述是小編給大家介紹的nodejs(officegen)+vue(axios)在客戶端導出word文檔的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五指山市| 长治市| 连平县| 新丰县| 广灵县| 张北县| 肥城市| 蒙城县| 灌阳县| 镶黄旗| 民勤县| 石渠县| 麻阳| 巨野县| 丰宁| 泽州县| 离岛区| 丹凤县| 芒康县| 汉中市| 平南县| 繁昌县| 东乌珠穆沁旗| 岳西县| 土默特左旗| 南川市| 淮阳县| 丰镇市| 板桥市| 政和县| 安宁市| 永吉县| 昌邑市| 延长县| 浪卡子县| 通海县| 麻栗坡县| 色达县| 灵丘县| 海南省| 平山县|