亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2018年07月31日 09:36:09   作者:風(fēng)子豬  
這篇文章主要介紹了nodejs(officegen)+vue(axios)在客戶端導(dǎo)出word文檔的方法,需要的朋友可以參考下

前言

我的項(xiàng)目中有一個(gè)需求:點(diǎn)擊按鈕生成可編輯的word文檔訂單詳情的信息

我使用的前端框架是Vue.js、后臺(tái)使用的是node.js

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

http://chabaoo.cn/article/144769.htm

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

問題

node.js上面這兩篇文章已經(jīng)講的很不錯(cuò)了,但是我在實(shí)現(xiàn)的過程中還是出現(xiàn)了一個(gè)問題:我在后端能生成一個(gè)完整的word文檔,但是在返回前端下載的時(shí)候遇到了問題。一開始我一直都以為node.js后臺(tái)方面的代碼導(dǎo)致的,畢竟我是第一次寫嘛^_^,但是在不斷的測(cè)試中我發(fā)現(xiàn):

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

2、但是在瀏覽器地址欄中請(qǐng)求同樣的后端接口,發(fā)現(xiàn)能生成一個(gè)整個(gè)的word文檔!

問題根源

有了頭緒我就開始上網(wǎng)搜尋,我發(fā)現(xiàn),ajax的接受類型只能是string字符串,不是流類型,所以無法實(shí)現(xiàn)文件下載。ajax方式請(qǐng)求的數(shù)據(jù)只能存放在javascipt內(nèi)存空間,可以通過javascript訪問,但是無法保存到硬盤,因?yàn)閖avascript不能直接和硬盤交互,否則將是一個(gè)安全問題。

axios是第一個(gè)第三方的ajax庫(kù),所以同理。

解決方法

解決的方法我參考了一篇文章前端axios下載excel(二進(jìn)制) http://chabaoo.cn/article/144771.htm

解決方法:利用了blob對(duì)象,Blob對(duì)象可以看做是存放二進(jìn)制數(shù)據(jù)的容器,它是一個(gè)二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器。

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對(duì)象
  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); //創(chuàng)建下載的鏈接
  downloadElement.href = href;
  downloadElement.download = orderId+'.docx'; //下載后文件名
  document.body.appendChild(downloadElement);
  downloadElement.click(); //點(diǎn)擊下載
  document.body.removeChild(downloadElement); //下載完成移除元素
  window.URL.revokeObjectURL(href); //釋放掉blob對(duì)象
  })
  }
 }

總結(jié)

以上所述是小編給大家介紹的nodejs(officegen)+vue(axios)在客戶端導(dǎo)出word文檔的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 一文詳解node.js有哪些全局對(duì)象呢

    一文詳解node.js有哪些全局對(duì)象呢

    這篇文章主要介紹了一文詳解node.js有哪些全局對(duì)象呢,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • Node.js Addons翻譯(C/C++擴(kuò)展)

    Node.js Addons翻譯(C/C++擴(kuò)展)

    這篇文章主要介紹了Node.js Addons翻譯(C/C++擴(kuò)展) 的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 基于Node.js的http模塊搭建HTTP服務(wù)器

    基于Node.js的http模塊搭建HTTP服務(wù)器

    這篇文章主要為大家介紹了基于Node.js的http模塊來搭建HTTP服務(wù)器的示例過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • Express實(shí)現(xiàn)登錄驗(yàn)證

    Express實(shí)現(xiàn)登錄驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了Express實(shí)現(xiàn)登錄驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • nodejs的路徑問題的解決

    nodejs的路徑問題的解決

    這篇文章主要介紹了nodejs的路徑問題的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • 使用node+vue.js實(shí)現(xiàn)SPA應(yīng)用

    使用node+vue.js實(shí)現(xiàn)SPA應(yīng)用

    這篇文章主要介紹了使用node+vue.js實(shí)現(xiàn)SPA應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 使用Node.js的async和await進(jìn)行異步編程

    使用Node.js的async和await進(jìn)行異步編程

    使用異步編程可以提高Node.js應(yīng)用程序的性能,而async和await是Node.js中實(shí)現(xiàn)異步編程的一種簡(jiǎn)單且易于使用的方式,可以幫助開發(fā)者避免回調(diào)地獄和處理異步操作時(shí)的錯(cuò)誤
    2023-05-05
  • node上的redis調(diào)用優(yōu)化示例詳解

    node上的redis調(diào)用優(yōu)化示例詳解

    這篇文章主要給大家介紹了關(guān)于node上redis調(diào)用優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Node.js定時(shí)任務(wù)之node-schedule使用詳解

    Node.js定時(shí)任務(wù)之node-schedule使用詳解

    這篇文章主要介紹了Node.js定時(shí)任務(wù)之node-schedule使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • nodejs構(gòu)建本地web測(cè)試服務(wù)器 如何解決訪問靜態(tài)資源問題

    nodejs構(gòu)建本地web測(cè)試服務(wù)器 如何解決訪問靜態(tài)資源問題

    這篇文章主要為大家詳細(xì)介紹了nodejs構(gòu)建本地web測(cè)試服務(wù)器,教大家如何解決訪問靜態(tài)資源問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論