uniapp+vue3实现小程序和h5解压线上压缩包以及如何访问解压后的视频地址
安装jszip插件
npm install jszip
对应功能实现和逻辑处理:
<script setup>import { onMounted, reactive, ref } from 'vue'import { onHide, onUnload } from '@dcloudio/uni-app'import JSZip from 'jszip'let videoSrc = ref('') // 视频地址// 创建JSZip实例const zip = new JSZip()// #ifdef MP-WEIXINlet fsm = reactive(null)// 创建临时文件路径const tempFilePath = `${uni.env.USER_DATA_PATH}/video.mp4`// #endifonMounted(() => {unzipOnlineFile(线上压缩地址)})onHide(() => {// 在适当的时候,比如组件销毁时,执行以下代码// #ifdef WEBURL.revokeObjectURL(videoSrc.value)// #endif// #ifdef MP-WEIXINfsm.removeSavedFile(tempFilePath)// #endif})onUnload(() => {// #ifdef WEBURL.revokeObjectURL(videoSrc.value)// #endif// #ifdef MP-WEIXINfsm.removeSavedFile(tempFilePath)// #endif})/*** 解压线上压缩包* @param zipUrl {String} 解压地址*/async function unzipOnlineFile (zipUrl) {// #ifdef WEB// 从URL加载.zip文件let response = await fetch(zipUrl)let arrayBuffer = await response.arrayBuffer()// 加载ArrayBuffer到JSZip实例await zip.loadAsync(arrayBuffer)// 获取压缩包中的文件列表fileList = Object.keys(zip.files)// 解压缩处理,解压第一个文件let fileContent = await zip.files[fileList[0]].async('string')// todo 进行页面对应的赋值 console.log(fileContent, '解压第一个文件的内容')// 解压缩处理,解压第二个文件(视频文件)zip.file(fileList[1]).async('blob').then(blob => {// 创建一个临时的URL指向Blob对象 设置video的src属性为临时的URL,可以进行视频的播放等操作videoSrc.value = URL.createObjectURL(blob)})// #endif// #ifdef MP-WEIXINuni.request({url: zipUrl,method: 'GET',responseType: 'arraybuffer', // 小程序中获取二进制数据需要指定arraybuffersuccess: res => {let data = res.data// 使用JSZip处理获取到的资源zip.loadAsync(data).then(contents => {// 处理解压后的内容fileList = Object.keys(contents.files)// 解压缩处理,解压第一个文件return zip.files[fileList[0]].async('string')}).then(fileContent => {// todo 进行页面对应的赋值 console.log(fileContent, '解压第一个文件的内容')}).then(() => {// 解压缩处理,解压第二个文件(视频文件)let videoFile = zip.files[fileList[1]] // 获取视频文件// 如果知道文件名,可以直接通过名字获取// const videoFile = zip.file('video.mp4');// 将视频文件内容转换为ArrayBuffer return videoFile.async('arraybuffer')}).then(videoBuffer => {fsm = uni.getFileSystemManager()// 写入临时文件return fsm.writeFile({filePath: tempFilePath,data: videoBuffer,encoding: 'binary'})}).then(()=> {// 设置video的src属性为临时的di,可以进行视频的播放等操作videoSrc.value = tempFilePath})},fail: error => {// 处理错误console.log(error, '解压错误')}})// #endif}
</script>
相关文章:
uniapp+vue3实现小程序和h5解压线上压缩包以及如何访问解压后的视频地址
安装jszip插件 npm install jszip 对应功能实现和逻辑处理: <script setup>import { onMounted, reactive, ref } from vueimport { onHide, onUnload } from dcloudio/uni-appimport JSZip from jsziplet videoSrc ref() // 视频地址// 创建JSZip实例con…...
探索 Zed 编辑器:速度与协作的巅峰之作
Zed 是一款备受瞩目的代码编辑器,专为现代开发者打造。本文将深入介绍 Zed 的独特优势,以及如何快速上手使用这款编辑器,助你在编程工作中大幅提升效率。 一:Zed 编辑器的优势 Zed 是近年来崭露头角的一款代码编辑器,迅速赢得了众多开发者的青睐。以下是 Zed 的几大核心优…...
文心快码前端工程师观点分享:人机协同新模式的探索之路(三)
本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会杭州站105期线下沙龙活动上,从一款文心快码(Baidu Comate)前端工程师的角度,分享了关于智能研发工具本身的研…...
Qt基础类03-直线类QLine
Qt基础类03-直线类QLine 摘要基本信息成员函数程序全貌QLine::QLine()QLine::QLine(const QPoint &p1, const QPoint &p2)QLine::QLine(int x1, int y1, int x2, int y2)QPoint QLine::p1() constQPoint QLine::p2() constint QLine::x1() constint QLine::x2() consti…...
集成电路学习:什么是ARM先进精简指令集计算机
ARM:先进精简指令集计算机 ARM先进精简指令集计算机(Advanced RISC Machine,简称ARM)是一种基于精简指令集计算机(RISC)原则的计算机处理器架构,由英国的ARM公司开发。这种架构以其低功耗和高性…...
设计模式-行为型模式-迭代器模式
1.迭代器模式的定义 迭代器模式提供一种对容器对象中的各个元素进行访问的方法,而不需要暴露该对象的内部细节; 在软件系统中,容器对象有两个职责:一是存储数据,二是遍历数据;从依赖性上看,前者…...
FRP代理(QUIC通信)实验
访问关系与TCP实验相同,配置不一样 服务端配置 客户端配置 通信数据...
项目依赖拉不下来卡着不动怎么办,node又不支持cnpm
如果你的项目依赖在拉取时卡住,可以尝试以下步骤来解决问题: 检查网络:确保你的网络连接稳定。如果可能,尝试使用 VPN 或更换网络。 使用镜像源: 对于 yarn,可以使用淘宝镜像: yarn confi…...
ansible--role
简介 roles是ansible,playbooks的目录的组织结构,将代码或文件进行模块化,成为roles的文件目录组织结构。 易读,代码可冲哟美好,层次清晰 目录机构 mkdir roles/nginx/{files,handlers,tasks,templates,vars} -ptou…...
SpinalHDL之数据类型(一)
本文作为SpinalHDL学习笔记第五十四篇,介绍SpinalHDL的Bool数据类型。 SpinalHDL技术交流QQ群: Note: 1.本群是个人技术交流群,不是什么官方答疑群; 2.提问是你的权利,但回答不是别人的义务; 3.可以潜水,不能灌水; 4.请文明交流,做这行的都算高层次人才,希望你…...
Ansys Zemax | 什么是Sobol取样?
附件下载 联系工作人员获取附件 本文主要介绍了: 什么是Sobol取样? 和随机光线产生方法相比,Sobol取样有什么优点? Sobol取样有什么限制? 随机取样和Sobol取样模式 一个光源会在位置空间以及角度空间随机产生光…...
Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】
Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现案例热更】 目录 Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现案例热更】 一、简单介绍 二、YooAsset 引…...
vue3写一个无限树形菜单,递归组件
原本使用element plus的el-tree,可是他的UI不匹配,狠难改成自己想要的,所以只能自己去写一个,做法:使用递归组件 效果 组件代码itemDir.vue // itemDir.vue<template><div><ul v-for"node in li…...
3D建模主要使用哪些软件?有什么特点?
3D建模主要使用的软件多种多样,每种软件都有其独特的优势和适用领域。以下是一些主流的3D建模软件: 1. Autodesk 3ds Max 概述:3ds Max是一款功能丰富的建模和动画软件,广泛用于电影、游戏和虚拟现实等领域。 特点:…...
Android Studio 加载多个FLutter项目
按顺序操作即可 选择工程 选择Modules, 导入 module 选中创建module 选择要导入的目录,只选择主目录,下面的文件不要选 添加完成,点击ok后,会进行导入 最终导入成功...
SealSuite 一站式 IT 管理与办公安全解决方案,助力出海企业夯实数字化底座
数字化办公时代,企业升级 IT 基础设施,已不再是选择题,而是必答题。 数字化办公时代,企业为何要升级 IT 基础设施? 随着时代变化与科技进步,人们的工作方式也发生了巨大变化。如今,远程办公、全…...
l超市售货管理系统小程序的设计
管理员账户功能包括:系统首页,个人中心,会员管理,供应商信息管理,商品管理,出入库管理,公告管理,轮播图信息 微信端账号功能包括:系统首页,公告,…...
systemverilog、verilog的部分常用内部函数
1. $ceil 作用:将给定的实数或浮点数向上取整。示例:$ceil(3.2) 返回 4。 2. $floor 作用:将给定的实数或浮点数向下取整。示例:$floor(3.9) 返回 3。 3. $value$plusargs 作用:从命令行读取传递给仿真器的参数。…...
Python趣味绘图案例
文章目录 系列文章趣味绘图案例1. 绘制简单的正方形2. 绘制五角星3. 绘制同心圆4. 绘制彩虹弧5. 绘制螺旋线6. 绘制六边形7. 绘制花形图案8. 绘制波浪线9. 绘制柱状图10. 绘制饼图 系列文章 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Pyt…...
P3588 [POI2015] PUS
~~~~~ P3588 [POI2015] PUS ~~~~~ 总题单链接 思路 ~~~~~ 这道题的关键点在于线段树优化建图。 ~~~~~ 对每条限制新建一个虚电 p p p,将输入的 x 1 ∼ k x_{1\sim k} x1∼k 连向 p p p,再将 p p p 连向区间内单的其他点,建完图后拓扑排…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
