Vue实现各种类型文件的预览功能

 更新时间:2025年03月11日 10:07:50   作者:多次拒绝王姨  
这篇文章主要介绍了如何在Vue3中使用aceEditor插件和vue-ipynb插件实现不同类型的文件预览,包括txt、md、json、pkl、mps、py、ipynb、doc、docx、pdf、xlsx、csv等文件,需要的朋友可以参考下

公司最近需求当用户实现对文件上传之后,用户需要对所上传的文件进行点击查看当前文件的内容,不同文件的类型太多,对部分文件进行了处理预览,例如:pkl、mps、txt、md、doc、xlsx、pdf、json、csv、py、png、jpg

先说对 [".txt", ".md", ".json", ".pkl", ".mps", ".py"] 

[".txt", ".md", ".json", ".pkl", ".mps", ".py"]预览

这些类的文件本身是对于文件内容文本所预览,如果没有太大的样式追求,推荐使用 VAceEditor 这个插件,

vue3-ace-editor 是一个基于 Ace Editor(流行的 web 前端代码编辑器)封装的 Vue 3 组件库,它允许在 Vue 程序中轻松集成和自定义 Ace 编辑器的功能。

支持多种编程语言的语法高亮、自动补全、主题切换、多语言支持等高级特性,使得开发者能够构建功能丰富的在线代码编辑器或 JSON 格式查看与编辑器等功能。

适用于开发IDE、在线代码编辑器、JSON编辑器等多种应用场景|。

这个是预览出来的结构

一、安装

npm i vue3-ace-editor

自行对aceConfig这些属性可以配置,当你通过某个事件去触发的时候可以去拿到地址去读取当前文件内容,我这里用某个函数去接受,拿到当前的完整地址发起请求去读取文件流,然后读取内容后追加放到结果中

[".ipynb"];文件预览

Ipynb文件跟一般文件不一样,这个文件里面会包含图片、代码、文本之类的、预览ipynb文件就需要将文件流转换成html进行预览,

这里要运用到一些插件

npm install marked ansi_up dompurify jsdom
npm install prismjs 
npm install babel-plugin-prismjs 

开源地址:vue-ipynb: Demo to view a .ipynb (python notebook) file with VUE.

它进行预览是通过上传文件拿到文件流的时候进行预览,而我做的是后端返回地址,通过地址发请求读取文件流,

它的开元nb文件某些情况下可能会执行报错,图片可能会预览不出来,我自己稍作了些修改,ipynb文件的图片为统一为base64格式,不然图片就不会显示出来

它的这一块即是我进行修改的地方,

它的nb.parse方法接收的是两个参数我们通过读取文件流之后给的是一个参数,

他源文件这个地方也要修改,不然就会导致底层报错,

如果报错之类的都解决掉了之后,读取文件流之后将转换成html结构,预览出来的效果就是这样的

这个结果就是html形式

[".doc", ".docx", ".pdf", ".xlsx", ".csv"];

前面四种有专门的插件很好预览,

npm i @vue-office/excel
npm i @vue-office/pdf
npm i @vue-office/docx

这个是模板部分 直接将你完整的地址传递到src属性里面

这个是script里面,你也可以通过不同的末尾去判断显示那个文件

csv文件预览

这个文件预览要用到插件,papaparse

下载

npm i papaparse

使用这个插件会有一个bug 比如说你的csv文件里面有中文,这个中文预览出来的效果就会是一堆乱码的样子,比如它自带的encoding配置只能对通过input上传的本地文件起作用,而通过URL远程取到的文件不支持

先用XMLHttpRequest()获取到文件,然后再用FileReader()改变文件的编码,最后用PapaParse直接解析

渲染出来的表格是没有边框样式的,可以自行用css进行加

预览出来的效果就是这样

看业务要求,有些文件是无法进行预览,可以商量直接下载

以上就是Vue实现各种类型文件的预览功能的详细内容,更多关于Vue各种文件预览的资料请关注脚本之家其它相关文章!

相关文章

  • element-ui table使用type='selection'复选框全禁用(全选禁用)详解

    element-ui table使用type='selection'复选框全禁用(全选禁用)详解

    element-ui中的table的多选很好用,但是如果其中某一项禁止选择,该怎样操作呢,下面这篇文章主要给大家介绍了关于element-ui table使用type='selection'复选框全禁用(全选禁用)的相关资料,需要的朋友可以参考下
    2023-01-01
  • Vue中Pinia的各种详细说明和使用示例

    Vue中Pinia的各种详细说明和使用示例

    Pinia是Vue 3的专属状态管理库,旨在替代Vuex,提供更简单、直观的状态管理解决方案,它支持组合式API和选项式API,允许跨组件或页面共享状态,避免了Vuex中的许多复杂概念,本文介绍Vue中Pinia的各种详细说明和使用示例,感兴趣的朋友一起看看吧
    2025-01-01
  • 解决vuecli3.0热更新失效的问题

    解决vuecli3.0热更新失效的问题

    今天小编就为大家分享一篇解决vuecli3.0热更新失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue技术分享之你可能不知道的7个秘密

    vue技术分享之你可能不知道的7个秘密

    这篇文章主要介绍了vue技术分享-你可能不知道的7个秘密,需要的朋友可以参考下
    2018-04-04
  • Vue3 $emit用法指南(含选项API、组合API及 setup 语法糖)

    Vue3 $emit用法指南(含选项API、组合API及 setup 语法糖)

    这篇文章主要介绍了Vue3 $emit用法指南,使用 emit,我们可以触发事件并将数据传递到组件的层次结构中,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 在Vue环境下利用worker运行interval计时器的步骤

    在Vue环境下利用worker运行interval计时器的步骤

    这篇文章主要介绍了在Vue环境下利用worker运行interval计时器的步骤,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • vue.js前后端数据交互之提交数据操作详解

    vue.js前后端数据交互之提交数据操作详解

    这篇文章主要介绍了vue.js前后端数据交互之提交数据操作,结合实例形式较为详细的分析了vue.js前后端数据交互相关的表单结构、约束规则、数据提交等相关操作技巧与注意事项,需要的朋友可以参考下
    2018-04-04
  • Vue Swiper组件实现记录

    Vue Swiper组件实现记录

    文章讲解Vue2中使用Swiper组件的实现步骤,包括版本适配、组件结构搭建、依赖安装、ESLint配置、数据加载与图片路径处理,以及响应式样式设置,确保组件正常运行,感兴趣的朋友跟随小编一起看看吧
    2025-07-07
  • 详解VUE2.X过滤器的使用方法

    详解VUE2.X过滤器的使用方法

    本篇文章主要介绍了详解VUE2.X过滤器的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • vue左右侧联动滚动的实现代码

    vue左右侧联动滚动的实现代码

    这篇文章主要介绍了vue左右侧联动滚动的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论