vue3中各種類型文件進行預覽功能實例

前言

摸著石頭過河的滋味不好受啊,聽說大廠的大佬們都在忙著用vue3在升級項目,我也沒事湊一波熱鬧。身處某小廠還是不甘於折騰。新做一個項目,直接上vue3 ,頭腦發熱 ,可能有人不計後果,但是跌跌撞撞還是基本搞完瞭,那記錄一下吧

今天說一下開發過程中的某一個功能吧!反正耗費不少時間,先說說功能需求吧:在上傳文件之後的文件列表中能夠點擊進行預覽,包含文件媒體類型包括 圖片 、word excel等文檔文件、pdf、視頻、音頻 的預覽針對pc端

1.office文檔類型的預覽

首先看到的是word excel 等文檔文件的預覽,針對改問題開始還是網上搜尋瞭一些方法,畢竟我這經驗甚少,有人推薦a標簽直接下載預覽,顯然不符合我們預期,有人推薦excel 使用sheetjs 但是我們word 也需要另找他法,最終我還是確定瞭使用微軟的在線預覽,使用iframe作為載體進行

<iframe  frameborder="0" 
:src="'https://view.officeapps.live.com/op/view.aspx?src='%20+%20fileUrl" width='100%'>
</iframe>

需要考慮的是我當時element-plus的dialog 彈框裡,iframe不能很好的撐開父元素所以又填充一些代碼。並且加載過程比較慢,由於時間原因就沒有考慮進行其他方法的嘗試

2.pdf類型的預覽

對於這種pdf的預覽,感覺好解決啊,使用原來使用過的 npm install pdfjs-dist ,開搞就完瞭,萬萬沒想到我這個目前還沒有支持vue3 所以理所當然的上來一跑就報錯也是理所應當的,果斷百度啊,百度告訴我說,這個pdfjs-dist vue3 不支持吶還,換個方法吧,我***,用你說 我想找解決辦法,主角來瞭下載之後將build和web文件夾放在我們的public文件下 做一下引用,註意自己的地址是不是對,我放在瞭一個embed 裡

  data.pdfUrl = './pdf/web/viewer.html?file='+type;  // 線上預覽
 <embed  :src="pdfUrl" style="width: 100%; "/>

3. 圖片類型

我覺這種類型 ,我們都不必多說,直接上代碼就可以瞭,處理一下url

<div v-if="showImg == true" class="dialog-body-content-base-style">
    <el-image
        class="image-preview"
        :src="imgUrl"
        />
</div>

4.視頻類型

對於視頻類型本來是想直接使用 video元素直接放裡的但是我是一個有追求的程序猿,追求自己的理想,沒事就是折騰麼,開始使用vue-video-palyer 進行視頻預覽,但是就是天不遂願,完vue3 中報錯 ,說白瞭又來瞭寶貝,沒支持vue3 唄? 沒事我習慣瞭,推薦大傢用一波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 這個標簽瞭,直接使用就完瞭。

<audio :src="musicUrl" controls></audio>

綜上建議大傢考慮周全 ,像大廠的大佬們有自己的組件庫,絲毫不擔心,但是小廠的我們還是謹慎一點。 希望vue更多的組件庫、功能庫更加完善,畢竟站在巨人肩膀上是方便的。沒事多研究源碼 。。。。。。

總結

到此這篇關於vue3中各種類型文件進行預覽功能的文章就介紹到這瞭,更多相關vue3各種類型文件預覽內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: