当前位置: 首页 > article >正文

React实现lottie文件预览(可识别json文件或压缩包带资源的素材)

React实现lottie文件预览(可识别json文件或压缩包带资源的素材)

  • 🔴 1、React实现lottie文件预览,所用到的第三方库

  • 🟢 1.1、

react-lottie 
jszip-sync
 npm install react-lottie jszip-sync // 或者yarn add react-lottie jszip-sync

jszip 使用会有点问题,后面就进行说明

  • 🟢 1.2、可实现的效果

  • 可以实现json文件的直接预览

  • 也可以实现压缩包带资源的素材

  • 可以实现资源线上化模式的方式预览压缩包

  • 也可以实现资源本地化模式的方式预览压缩包

  • 🟢 1.3、踩坑

  • mac 电脑的压缩文件在使用 jszip 解压之后,会存在一些隐藏文件的出现 __MACOSX 开头的文件,DS_Store后缀的文件,在进行文件资源遍历的时候需要过滤掉

 file.dir || file.name.startsWith('__MACOSX') || file.name.includes('DS_Store')
/* 使用jszip-sync 而不是 jszip会出现线上部署之后 async 方法调用不通 *//* npm包地址 https://www.npmjs.com/package/jszip-sync */
import JSZip from 'jszip-sync'; /* 下面是伪代码 */
cosnt res = await fetch('资源地址')const data = await response.blob(); const zip = new JSZip();const content = await zip.loadAsync(data);let urls = {} as any;let jsonData = '';for (let filename of Object.keys(content.files)) {const file = content.files[filename];/* todo 过滤掉隐藏文件 *//* 根据不同文件类型获取自己想要的数据格式 *//* 如果是图片/媒体资源文件 */await file.async('blob');/* 如果是json文件 */await file.async('string');/* 其中二进制文件可以通过 下面方式转化为一个本地的url */URL.createObjectURL('二进制文件数据');}

获取到json 数据 外加 图片/媒体资源文件 就可以组装数据

/* 核心就是吧json 数据中的资源 映射到本地链接 */export const dealAssets = (assets, urls: any) => {if (Array.isArray(assets || [])) {return assets.map((item) => {if (urls[item.p]) {console.log('成功匹配到资源');item.p = urls[item.p];item.u = '';}return item;});}message.error('映射资源失败,json文件中未找到asset列表');return [];
};

相关文章:

React实现lottie文件预览(可识别json文件或压缩包带资源的素材)

React实现lottie文件预览(可识别json文件或压缩包带资源的素材) 🔴 1、React实现lottie文件预览,所用到的第三方库 🟢 1.1、 react-lottie jszip-syncnpm install react-lottie jszip-sync // 或者yarn add react-…...

网上打印平台哪个好用?网上打印资料推荐

网上打印平台哪个好用 随着数字化办公的普及,网上打印平台因其便捷性和经济性而受到越来越多人的青睐。无论是学生、上班族还是个人用户,在需要快速打印资料时,一个好用的在线打印服务可以大大节省时间和成本。 那么,如何选择一…...

Mac远程桌面软件哪个好用?

远程桌面软件能帮助我们快速的远程控制另一台电脑,从而提供远程帮助,或者进行远程办公。那么,对macOS系统有什么好用的Mac远程桌面软件呢? 远程看看是一款操作简单、界面简洁的远程桌面软件,支持跨平台操作&#xff0…...

【回溯 力扣】17. 电话号码的字母组合

题目 17. 电话号码的字母组合 思路 定义数组存储数字对应的字符串&#xff0c;本题回溯时为index1,因为下一个数字选的是下一个字符串&#xff0c;前两题都是属于同一个字符串。 代码 class Solution { private:vector<string>result;string duiying[10]{"&quo…...

【基础1】冒泡排序

核心思想 冒泡排序是通过相邻元素的连续比较和交换&#xff0c;使得较大的元素逐渐"浮"到数组的末尾&#xff0c;如同水中气泡上浮的过程 特点&#xff1a; 每轮遍历将最大的未排序元素移动到正确位置​稳定排序&#xff1a;相等元素的相对位置保持不变​原地排序…...

C#—Settings配置详解

C#—Settings配置详解 在C#项目中&#xff0c;全局配置通常指的是应用程序的设置&#xff08;settings&#xff09;&#xff0c;这些设置可以跨多个类或组件使用&#xff0c;并且通常用于存储应用程序的配置信息&#xff0c;如数据库连接字符串、用户偏好设置等。 Settings配置…...

详解DeepSeek模型底层原理及和ChatGPT区别点

一、DeepSeek大模型原理 架构基础 DeepSeek基于Transformer架构,Transformer架构主要由编码器和解码器组成,在自然语言处理任务中,通常使用的是Transformer的解码器部分。它的核心是自注意力机制(Self - Attention),这个机制允许模型在处理输入序列时,关注序列中不同位…...

PyCharm中通过命令行执行`pip`命令下载到哪里了:虚拟环境目录下

PyCharm中通过命令行执行pip命令下载到哪里了:虚拟环境目录下 在PyCharm中通过命令行执行pip命令安装工具包,包的下载位置取决于多种因素 虚拟环境 如果项目使用了虚拟环境(通常是推荐的做法): Windows:虚拟环境通常位于项目目录下的.venv文件夹(默认情况)或你指定…...

Golang的性能分析指标解读

Golang的性能分析指标解读 一、概述 语言&#xff09;是一种由Google开发的开源编程语言&#xff0c;以其并发性能和高效的编译速度而闻名。对于程序员来说&#xff0c;了解如何对Golang应用程序进行性能分析是非常重要的&#xff0c;因为这能帮助他们发现潜在的性能瓶颈并对其…...

QT 作业 day4

作业 代码 Widget.h class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:// 槽函数void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui; }; #endif Widget.cpp Widget::Widget(QW…...

力扣刷题——4.寻找两个正序数组的中位数

题目要求在两个有序数组中找到中位数。由于时间复杂度要求为 O(log(mn))&#xff0c;因此不能简单地将两个数组合并后再找中位数&#xff0c;而是需要用二分查找的思路来解决。 解决思路&#xff1a;二分查找 将问题转化为在两个有序数组中寻找第 k小的数&#xff0c;其中 k 是…...

redis 与 DB 的一致性 7 种策略

为什么要使用 redis 做缓存?封底估算为什么是单行数据的QPS,而不是总的? 什么时候使用DB,Redis,本地缓存 数据的分类一致性的方案1. 先清除Redis,再更新 DB2. 先更新DB,再清除 Redis使用场景: 3. 延迟删除与延迟双删使用场景 4. 监听 binlog 清除5. 双写使用场景: 6. 监听bin…...

Docker安装Redpandata-console控制台

介绍 Redpanda控制台&#xff0c;这是一个功能强大的Web UI&#xff0c;用于管理和监控您的Redpanda 集群。探索实际示例和场景&#xff0c;以帮助您了解如何利用 Redpanda 控制台实现不同的用例&#xff0c;包括数据可观察性、Redpanda 管理、访问控制和连接。 可对Redpanda…...

【自学笔记】NoSQL基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 NoSQL基础知识点总览一、NoSQL简介二、NoSQL数据库类型三、NoSQL数据库特点四、MongoDB基础示例1. 安装MongoDB2. 启动MongoDB服务3. 使用MongoDB Shell4. 创建数据…...

专业 英语

文章目录 1.计算机(1)计算机组成原理(2)计算机网络(3)数据库(4)编译原理(5)编程词汇(6)开发术语(7)芯片(8)嵌入式硬件(9)职场(10)软件(11)论文(12)深度学习 DL(13)计算机视觉 CV(14)自动驾驶(15)自然语言处理 NLP(16)计算机图形学(17)Linux 2.数学3.机械、材料5.医药/护肤6.奢侈…...

【分享】网间数据摆渡系统,如何打破传输瓶颈,实现安全流转?

在数字化浪潮中&#xff0c;企业对数据安全愈发重视&#xff0c;网络隔离成为保护核心数据的重要手段。内外网隔离、办公网与研发网隔离等措施&#xff0c;虽为数据筑牢了防线&#xff0c;却也给数据传输带来了诸多难题。传统的数据传输方式在安全性、效率、管理等方面暴露出明…...

Docker创建自定义网桥并指定网段

前言 docker0是Docker默认网络的核心组件, 通过虚拟网桥和NAT技术, 实现了容器间的通信以及容器与外部网络的交互。然而, docker0网段是固定的(通常是172.17.0.0/16), 为了更灵活地管理容器网络&#xff0c;Docker支持创建自定义网桥&#xff0c;允许用户指定网段。 例如, 在…...

【蓝桥】常用库函数

1、memset()函数 1.1 基本介绍 定义在头文件<cstring>中主要作用是对一块内存区域进行设置值的操作 1.2 函数原型 void *memset(void *str, int c, size_t n);str&#xff1a;指向要填充的内存块的指针c&#xff1a;要设置的值。该值以int形式传递&#xff0c;但函数在…...

用DeepSeek生成批量删除处理 PDF第一页工具

安装依赖库 在运行程序之前&#xff0c;请确保安装所需的库&#xff1a; pip install pymupdf python-docx Python 程序代码 import os import fitz # PyMuPDF from docx import Documentdef delete_pdf_first_page(input_path, output_path):"""删除 PDF…...

关于高精度力扣66

class Solution { public: vector<int> plusOne(vector<int>& d) { if(d.back()<9){ d[d.size()-1]; return d; } else{ string temp; for(int i0;i<d.size();i){ temptempto_string(d[i]); } int astoi(temp);//这里会报错是因为超过int表示的范围了 a…...

03.03 QT

1.在注册登录的练习里面&#xff0c;追加一个QListwidget 项目列表 要求:点击注册之后&#xff0c;将账号显示到 1istwidget上面去 以及&#xff0c;在listwidget中双击某个账号的时候&#xff0c;将该账号删除 Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWi…...

华为云 | 快速搭建DeepSeek推理系统

DeepSeek&#xff08;深度求索&#xff09;作为一款国产AI大模型&#xff0c;凭借其高性能、低成本和多模态融合能力&#xff0c;在人工智能领域崛起&#xff0c;并在多个行业中展现出广泛的应用潜力。 如上所示&#xff0c;在华为云解决方案实践中&#xff0c;华为云提供的快速…...

BUUCTF [BJDCTF2020]EasySearch1

写一篇文章来学习一下 ssi 注入 以及 dirmap 工具的使用 看到这两个框框没什么想法&#xff0c;边探索边扫下目录吧。显示前端报错&#xff0c;先禁用了js&#xff0c;然后又尝试抓了下包&#xff0c;没有发现什么&#xff0c;只好看看扫出来的目录了&#xff0c;最终扫出来了…...

探秘基带算法:从原理到5G时代的通信变革【五】CORDIC算法

文章目录 2.4 CORDIC算法2.4.1 CORDIC算法的基本原理2.4.2 方法论与分类体系旋转模式矢量模式线性模式 2.4.3 **CORDIC 算法中的误差来源****角度逼近误差的分析****缩放效应误差的分析****精度需求与迭代次数的关系****常见应用场景下的迭代次数建议****总结** 2.4.4优缺点分析…...

FPGA学习篇——Verilog学习2

1 系统函数 Verilog 语言中预先定义了一些任务和函数&#xff0c;用于完成一些特殊的功能&#xff0c;它们被称为系统任务和系统函数&#xff0c;这些函数大多数都是只能在 Testbench 仿真中使用的&#xff0c;使我们更方便的进行验证。 1.1 时间预编译指令及延时 时间精度&a…...

51单片机编程学习笔记——74HC245八路三态输出双向收发器

大纲 组成电源引脚和地引脚使能输入端DIR&#xff08;T/R&#xff09;引脚A端和B端 工作原理数据传输方向控制使能控制 在单片机系统里&#xff0c;单片机的 I/O 口驱动能力往往有限。当需要连接较多外部设备或者负载较大时&#xff0c;就可能出现信号传输不稳定的问题。74HC24…...

C++:类和对象(下篇)

1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _mont…...

Full GC 排查

在 Java 中&#xff0c;Full GC&#xff08;完全垃圾回收&#xff09;会对整个堆&#xff08;包括年轻代和老年代&#xff0c;甚至可能包括永久代/元空间&#xff09;进行垃圾回收&#xff0c;通常会导致较长的停顿&#xff08;STW&#xff0c;Stop-The-World&#xff09;。如果…...

DeepSeek集成到VScode工具,让编程更高效

DeepSeek与VScode的强强联合&#xff0c;为编程效率树立了新标杆。 DeepSeek&#xff0c;一款卓越的代码搜索引擎&#xff0c;以其精准的索引和高速的检索能力&#xff0c;助力开发者在浩瀚的代码海洋中迅速定位关键信息。 集成至VScode后&#xff0c;开发者无需离开熟悉的编辑…...

PPT 小黑第38套

对应大猫40 幻灯片母板-最后一页-重命名为奇数页 奇偶页-点中标题-形状格式-形状填充-青色 最后一页页码左对齐 更换幻灯片背景&#xff1a;设计-设置背景格式-图片填充 【开始】-段落居中&#xff0c;对齐文本-中部对齐&#xff0c;排列-对齐-底端&#xff0c;-再水平居中…...