小編給大家分享一下nodejs+vue如何實現(xiàn)在客戶端導(dǎo)出word文檔,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元順河做網(wǎng)站,已為上家服務(wù),為順河各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
問題
node.js上面這兩篇文章已經(jīng)講的很不錯了,但是我在實現(xiàn)的過程中還是出現(xiàn)了一個問題:我在后端能生成一個完整的word文檔,但是在返回前端下載的時候遇到了問題。一開始我一直都以為node.js后臺方面的代碼導(dǎo)致的,畢竟我是第一次寫嘛^_^,但是在不斷的測試中我發(fā)現(xiàn):
1、點擊按鈕用vue里面的axios請求localhost:8081/order/getDoc沒有直接生成word文檔,把返回的數(shù)據(jù)console.log(res)出來查看,發(fā)現(xiàn)得到的數(shù)據(jù)是一堆的亂碼的字符串
2、但是在瀏覽器地址欄中請求同樣的后端接口,發(fā)現(xiàn)能生成一個整個的word文檔!
問題根源
有了頭緒我就開始上網(wǎng)搜尋,我發(fā)現(xiàn),ajax的接受類型只能是string字符串,不是流類型,所以無法實現(xiàn)文件下載。ajax方式請求的數(shù)據(jù)只能存放在javascipt內(nèi)存空間,可以通過javascript訪問,但是無法保存到硬盤,因為javascript不能直接和硬盤交互,否則將是一個安全問題。
axios是第一個第三方的ajax庫,所以同理。
解決方法
解決的方法我參考了一篇文章前端axios下載excel(二進(jìn)制) https://www.jb51.net/article/144771.htm
解決方法:利用了blob對象,Blob對象可以看做是存放二進(jìn)制數(shù)據(jù)的容器,它是一個二進(jìn)制大對象,是一個可以存儲二進(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對象 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(); //點擊下載 document.body.removeChild(downloadElement); //下載完成移除元素 window.URL.revokeObjectURL(href); //釋放掉blob對象 }) } }
以上是“nodejs+vue如何實現(xiàn)在客戶端導(dǎo)出word文檔”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞標(biāo)題:nodejs+vue如何實現(xiàn)在客戶端導(dǎo)出word文檔
鏈接分享:http://aaarwkj.com/article48/pjcjhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、做網(wǎng)站、關(guān)鍵詞優(yōu)化、Google、網(wǎng)站建設(shè)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)