vue3中各種類型文件進(jìn)行預(yù)覽功能實(shí)例
前言
摸著石頭過(guò)河的滋味不好受啊,聽說(shuō)大廠的大佬們都在忙著用vue3在升級(jí)項(xiàng)目,我也沒事湊一波熱鬧。身處某小廠還是不甘于折騰。新做一個(gè)項(xiàng)目,直接上vue3 ,頭腦發(fā)熱 ,可能有人不計(jì)后果,但是跌跌撞撞還是基本搞完了,那記錄一下吧
今天說(shuō)一下開發(fā)過(guò)程中的某一個(gè)功能吧!反正耗費(fèi)不少時(shí)間,先說(shuō)說(shuō)功能需求吧:在上傳文件之后的文件列表中能夠點(diǎn)擊進(jìn)行預(yù)覽,包含文件媒體類型包括 圖片 、word excel等文檔文件、pdf、視頻、音頻 的預(yù)覽針對(duì)pc端
1.office文檔類型的預(yù)覽
首先看到的是word excel 等文檔文件的預(yù)覽,針對(duì)改問(wèn)題開始還是網(wǎng)上搜尋了一些方法,畢竟我這經(jīng)驗(yàn)甚少,有人推薦a標(biāo)簽直接下載預(yù)覽,顯然不符合我們預(yù)期,有人推薦excel 使用sheetjs 但是我們word 也需要另找他法,最終我還是確定了使用微軟的在線預(yù)覽,使用iframe作為載體進(jìn)行
<iframe frameborder="0" :src="'https://view.officeapps.live.com/op/view.aspx?src=' + fileUrl" width='100%'> </iframe>
需要考慮的是我當(dāng)時(shí)element-plus的dialog 彈框里,iframe不能很好的撐開父元素所以又填充一些代碼。并且加載過(guò)程比較慢,由于時(shí)間原因就沒有考慮進(jìn)行其他方法的嘗試
2.pdf類型的預(yù)覽
對(duì)于這種pdf的預(yù)覽,感覺好解決啊,使用原來(lái)使用過(guò)的 npm install pdfjs-dist ,開搞就完了,萬(wàn)萬(wàn)沒想到我這個(gè)目前還沒有支持vue3 所以理所當(dāng)然的上來(lái)一跑就報(bào)錯(cuò)也是理所應(yīng)當(dāng)?shù)?,果斷百度啊,百度告訴我說(shuō),這個(gè)pdfjs-dist vue3 不支持吶還,換個(gè)方法吧,我***,用你說(shuō) 我想找解決辦法,主角來(lái)了下載之后將build和web文件夾放在我們的public文件下 做一下引用,注意自己的地址是不是對(duì),我放在了一個(gè)embed 里
data.pdfUrl = './pdf/web/viewer.html?file='+type; // 線上預(yù)覽
<embed :src="pdfUrl" style="width: 100%; "/>
3. 圖片類型
我覺這種類型 ,我們都不必多說(shuō),直接上代碼就可以了,處理一下url
<div v-if="showImg == true" class="dialog-body-content-base-style"> <el-image class="image-preview" :src="imgUrl" /> </div>
4.視頻類型
對(duì)于視頻類型本來(lái)是想直接使用 video元素直接放里的但是我是一個(gè)有追求的程序猿,追求自己的理想,沒事就是折騰么,開始使用vue-video-palyer 進(jìn)行視頻預(yù)覽,但是就是天不遂愿,完vue3 中報(bào)錯(cuò) ,說(shuō)白了又來(lái)了寶貝,沒支持vue3 唄? 沒事我習(xí)慣了,推薦大家用一波vue-vam-video
npm install vue-vam-video -s
import VamVideo from "vue-vam-video"; components: { VamVideo, }, setup(props,context) { const data = reactive({ videoOption: { properties: { poster: '', src:"", preload: "auto", // loop: "loop", // autoplay:"autoplay", // muted:true }, videoStyle: { width: "100%", // height: "600px", }, controlsConfig: { fullScreenTit:"全屏", EscfullScreenTit:"退出全屏", speedTit:"倍速", yinliangTit:"音量", jingyinTit:"靜音", playTit:"播放", pauseTit:"暫停", fullScreen:true, speed:true, listen:true } }, }) }
<vam-video :properties="videoOption.properties" :videoStyle="videoOption.videoStyle" :controlsConfig="videoOption.controlsConfig" @play="playVideo" @canplay="canplayVideo" @pause="pauseVideo" ></vam-video>
5. 音頻類型
吃了上邊的虧,終于還是決定使用audio 這個(gè)標(biāo)簽了,直接使用就完了。
<audio :src="musicUrl" controls></audio>
綜上建議大家考慮周全 ,像大廠的大佬們有自己的組件庫(kù),絲毫不擔(dān)心,但是小廠的我們還是謹(jǐn)慎一點(diǎn)。 希望vue更多的組件庫(kù)、功能庫(kù)更加完善,畢竟站在巨人肩膀上是方便的。沒事多研究源碼 。。。。。。
總結(jié)
到此這篇關(guān)于vue3中各種類型文件進(jìn)行預(yù)覽功能的文章就介紹到這了,更多相關(guān)vue3各種類型文件預(yù)覽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue中如何實(shí)現(xiàn)pdf文件預(yù)覽的方法
- Vue中如何實(shí)現(xiàn)在線預(yù)覽word文件、excel文件
- vue實(shí)現(xiàn)在線預(yù)覽pdf文件和下載(pdf.js)
- vue使用pdf.js預(yù)覽pdf文件的方法
- vue3如何實(shí)現(xiàn)PDF文件在線預(yù)覽功能
- vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法
- Vue3 + Vue-PDF 實(shí)現(xiàn)PDF 文件在線預(yù)覽實(shí)戰(zhàn)
- Vue實(shí)現(xiàn)在線預(yù)覽pdf文件功能(利用pdf.js/iframe/embed)
- Vue實(shí)現(xiàn)預(yù)覽docx/xlsx/pdf等類型文件功能
- vue中實(shí)現(xiàn)支持txt,docx,xlsx,mp4格式文件預(yù)覽功能(純前端)
相關(guān)文章
vue中this.$router.push()路由傳值和獲取的兩種常見方法匯總
這篇文章主要介紹了vue中this.$router.push()路由傳值和獲取的兩種常見方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12vue中el-table實(shí)現(xiàn)可拖拽移動(dòng)列和動(dòng)態(tài)排序字段
最近公司需要做個(gè)項(xiàng)目,需要拖拽表格和自定義表格字段,本文主要介紹了vue中el-table實(shí)現(xiàn)可拖拽移動(dòng)列和動(dòng)態(tài)排序字段,具有一定吃參考價(jià)值,感興趣的可以了解一下2023-12-12vue3基于script?setup語(yǔ)法$refs的使用
這篇文章主要介紹了vue3基于script?setup語(yǔ)法$refs的使用,<BR>?在用vue3開發(fā)項(xiàng)目的時(shí)候,需要調(diào)用子組件的方法,于是想著用$refs來(lái)實(shí)現(xiàn),但是我是使用script?setup語(yǔ)法糖,原先vue2的語(yǔ)法已經(jīng)不適用了。下面我們一起進(jìn)入文章看詳細(xì)內(nèi)容吧</P><P>2021-12-12詳解element-ui設(shè)置下拉選擇切換必填和非必填
這篇文章主要介紹了詳解element-ui設(shè)置下拉選擇切換必填和非必填,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06vue的diff算法知識(shí)點(diǎn)總結(jié)
本篇文章給大家分享了關(guān)于vue的diff算法的相關(guān)知識(shí)點(diǎn)總結(jié),有興趣的朋友參考學(xué)習(xí)下。2018-03-03