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各种文件预览的资料请关注脚本之家其它相关文章!

相关文章

  • 如何在Vue中获取DOM元素的实际宽高

    如何在Vue中获取DOM元素的实际宽高

    使用vue的时候,想要获得一个指定的元素的高度时,下面这篇文章主要给大家介绍了关于如何在Vue中获取DOM元素的实际宽高的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Vue3计算属性和异步计算属性方式

    Vue3计算属性和异步计算属性方式

    这篇文章主要介绍了Vue3计算属性和异步计算属性方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Vue中通过minio上传文件的详细步骤

    Vue中通过minio上传文件的详细步骤

    最近项目中使用了minio作为静态资源管理服务,所以简单写一下如何通过minio来上传图片,下面这篇文章主要给大家介绍了关于Vue中通过minio上传文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 使用Vue3实现交互式雷达图的代码实现

    使用Vue3实现交互式雷达图的代码实现

    雷达图是一种可视化数据的方式,用于比较多个类别中不同指标的相对值,它适用于需要展示多个指标之间的关系和差异的场景,本文给大家介绍了如何用Vue3轻松创建交互式雷达图,需要的朋友可以参考下
    2024-06-06
  • vue router自动判断左右翻页转场动画效果

    vue router自动判断左右翻页转场动画效果

    最近公司项目比较少终于有空来记录一下自己对vue-router的一些小小的使用心得,本文给大家分享vue router自动判断左右翻页转场动画效果,感兴趣的朋友一起看看吧
    2017-10-10
  • vue中标签自定义属性的使用及说明

    vue中标签自定义属性的使用及说明

    这篇文章主要介绍了vue中标签自定义属性的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • vue中router-view使用教程详解

    vue中router-view使用教程详解

    router-view组件作为vue最核心的路由管理组件,在项目中作为路由管理经常被使用到,本文主要为大家详细介绍了router-view具体使用,希望对大家有所帮助
    2023-12-12
  • Vue Extends 扩展选项用法完整实例

    Vue Extends 扩展选项用法完整实例

    这篇文章主要介绍了Vue Extends 扩展选项用法,结合完整实例形式分析了Vue Extends 扩展选项相关使用技巧与操作注意事项,需要的朋友可以参考下
    2019-09-09
  • 详解Vue全局组件的挂载之实现弹窗组件

    详解Vue全局组件的挂载之实现弹窗组件

    这篇文章主要为大家详细介绍了如何通过Vue全局组件的挂载来实现弹窗组件,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2022-11-11
  • Vue3+TypeScript实现二维码生成组件

    Vue3+TypeScript实现二维码生成组件

    在 Web 应用中,生成二维码是常见的需求,本文介绍如何用 Vue3 和 TypeScript 开发一个二维码生成组件,支持生成图片或 canvas 形式的二维码,并提供丰富的配置选项,感兴趣的小伙伴跟着小编一起来看看吧
    2024-04-04

最新评论