vue3中做文件預(yù)覽的項(xiàng)目實(shí)踐
以vue3為基礎(chǔ),針對(duì)常見文件類型做項(xiàng)目內(nèi)的預(yù)覽功能
涉及到的文件類型有docx,xlsx,pdf,txt,png,jpg,jpeg,mp4,mp3,
這里你可能會(huì)疑惑為什么docx,xlsx都支持,為啥不順帶支持下doc和docx呢???
這里我也表示很難啊,針對(duì)老版本格式的文檔,沒有合適的解決方案,如果說一定要有,那就只能是通過下載的方式本地預(yù)覽了 ┭┮﹏┭┮
開整開整~
1. docx文檔預(yù)覽解決方案
安裝下依賴這里呢我用的是1.6.2版本
npm i @vue-office/docx 或者 yarn add @vue-office/docx
模版代碼塊里面這里呢支持的屬性分別介紹下
- src:資源路徑http://116.228.88.26:52800/nymanagerFile/group1/M00/00/B8/rBwWM2aGQyCAGisxAAqcqJw-Cq468.docx
- style:自定義樣式
- rendered:渲染完成后調(diào)用
- error:渲染失敗后調(diào)用
<vue-office-docx :src="previewSrc" :style="comStyle" @rendered="renderedHandler" @error="errorHandler" />
script 標(biāo)簽內(nèi)
<script setup>
// 獲取父組件傳遞的資源url
const props = defineProps({
previewSrc: {
type: String,
required: false,
default: () => ''
}
});
//引入VueOfficeDocx組件相關(guān)
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
</script>
運(yùn)行成功之后展示

2. xlsx文檔預(yù)覽解決方案
安裝下依賴這里呢我用的是1.7.8版本
npm i @vue-office/excel 或者 yarn add @vue-office/excel
模版代碼塊里面這里呢支持的屬性分別介紹下
- src:資源路徑http://116.228.88.26:52800/nymanagerFile/group1/M00/00/B8/rBwWM2aGQyCAGisxAAqcqJw-Cq468.xlsx
- style:自定義樣式
- rendered:渲染完成后調(diào)用
- error:渲染失敗后調(diào)用
<vue-office-excel :src="previewSrc" :style="comStyle" @rendered="renderedHandler" @error="errorHandler" />
script 標(biāo)簽內(nèi)
<script setup>
// 獲取父組件傳遞的資源url
const props = defineProps({
previewSrc: {
type: String,
required: false,
default: () => ''
}
});
//引入VueOfficeExcel組件相關(guān)
import VueOfficeExcel from '@vue-office/excel'
import '@vue-office/excel/lib/index.css'
</script>
運(yùn)行成功之后展示

3. pdf&txt文檔預(yù)覽解決方案
無需安裝依賴這里呢采用的是iframe方式來展示,因?yàn)槟豬frame是自帶支持pdf和txt的
模版代碼塊里面這里呢支持的屬性分別介紹下
- src:資源路徑http://116.228.88.26:52800/nymanagerFile/group1/M00/00/B8/rBwWM2aGQyCAGisxAAqcqJw-Cq468.pdf
<iframe
:src="previewSrc"
></iframe>
script 標(biāo)簽內(nèi)
<script setup>
// 獲取父組件傳遞的資源url
const props = defineProps({
previewSrc: {
type: String,
required: false,
default: () => ''
}
});
</script>
運(yùn)行成功之后展示

4. video文檔預(yù)覽解決方案
安裝下依賴這里呢我用的是1.3.2版本
npm i vue3-video-play 或者 yarn add vue3-video-play
可以選擇在入口文件里面導(dǎo)入一下
// 視頻播放器組件 import App from './App' const app = createApp(App) import vue3videoPlay from 'vue3-video-play' // 引入組件 import 'vue3-video-play/dist/style.css' // 引入css app.use(vue3videoPlay)
這里導(dǎo)入的時(shí)候回存在一個(gè)問題,就是依賴包引入的路徑回有問題,會(huì)導(dǎo)致項(xiàng)目在運(yùn)行的時(shí)候報(bào)錯(cuò)。這里給出解決方案======》需要將依賴包中package.json文件中的’module’改為"./dist/index.mjs"

模版代碼塊里面
<vue3VideoPlay width="100%" title="鋼鐵俠" :src="previewSrc" :poster="options.poster" @play="onPlay" @pause="onPause" @timeupdate="onTimeupdate" @canplay="onCanplay" />
script 標(biāo)簽內(nèi)
<script setup>
<script setup>
import { reactive } from 'vue';
const props = defineProps({
previewSrc: {
type: String,
required: false,
default: () => ''
},
});
console.log('資源地址:',props.previewSrc);
const options = reactive({
// src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4", //視頻源
poster: '', //封面
})
const onPlay = (ev) => {
// console.log('播放')
}
const onPause = (ev) => {
// console.log(ev, '暫停')
}
const onTimeupdate = (ev) => {
// console.log(ev, '時(shí)間更新')
}
const onCanplay = (ev) => {
// console.log(ev, '可以播放')
}
</script>
運(yùn)行成功之后展示

5. audio(MP3等)文檔預(yù)覽解決方案
這里呢?zé)o需要裝第三方依賴,使用audio標(biāo)簽
**模版代碼塊里面**
```javascript
<audio
controls
controlsList="nodownload"
style="width: 100%;"
>
<source
:src="previewSrc"
type="audio/mp3"
>
您的瀏覽器不支持audio標(biāo)簽。
</audio>
script 標(biāo)簽內(nèi)
<script setup>
// 獲取父組件傳遞的資源url
const props = defineProps({
previewSrc: {
type: String,
required: false,
default: () => ''
}
});
</script>
運(yùn)行成功之后展示

到此這篇關(guān)于vue3中做文件預(yù)覽的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)vue3 文件預(yù)覽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue實(shí)現(xiàn)PDF文件預(yù)覽的方法詳解
- vue-pdf如何通過文件流預(yù)覽pdf文件
- vue如何在線預(yù)覽各類型文件
- 如何用vue-pdf包實(shí)現(xiàn)pdf文件預(yù)覽,支持分頁
- vue預(yù)覽本地pdf文件方法之vue-pdf組件使用
- vue2.0如何借用vue-pdf實(shí)現(xiàn)在線預(yù)覽pdf文件
- 詳解vue2如何實(shí)現(xiàn)點(diǎn)擊預(yù)覽本地文件
- Vue如何實(shí)現(xiàn)文件預(yù)覽和下載功能的前端上傳組件
- Vue實(shí)現(xiàn)微信小程序中預(yù)覽文件的縮放功能
相關(guān)文章
詳解Vue如何實(shí)現(xiàn)響應(yīng)式布局
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)響應(yīng)式布局的兩種方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起了解一下2023-12-12
vue中導(dǎo)出Excel表格的實(shí)現(xiàn)代碼
項(xiàng)目中我們可能會(huì)碰到導(dǎo)出Excel文件的需求,這篇文章主要介紹了vue中導(dǎo)出Excel表格的實(shí)現(xiàn)代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10
在vue中使用el-tab-pane v-show/v-if無效的解決
這篇文章主要介紹了在vue中使用el-tab-pane v-show/v-if無效的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
vue使用websocket實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)推送功能
這篇文章主要為大家詳細(xì)介紹了vue如何使用websocket實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)推送,發(fā)布訂閱重連單點(diǎn)登錄功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
vue中利用mqtt服務(wù)端實(shí)現(xiàn)即時(shí)通訊的步驟記錄
前些日子了解到mqtt這樣一個(gè)協(xié)議,可以在web上達(dá)到即時(shí)通訊的效果,所以下面這篇文章主要給大家介紹了關(guān)于vue中如何利用mqtt服務(wù)端實(shí)現(xiàn)即時(shí)通訊的相關(guān)資料,需要的朋友可以參考下2021-07-07
vue中多個(gè)文件下載實(shí)現(xiàn)打包壓縮下載示例
這篇文章主要為大家介紹了vue中多個(gè)文件下載實(shí)現(xiàn)打包壓縮下載的發(fā)發(fā)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
vue實(shí)現(xiàn)動(dòng)態(tài)給id賦值,點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素的id操作
這篇文章主要介紹了vue實(shí)現(xiàn)動(dòng)態(tài)給id賦值,點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素的id操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11

