首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Zip 压缩、解压技术在 HTML5 浏览器中应用

JSZip 是一款可以创建、读取、修改 .zip 文件 javaScript 工具。...new JSZip(data) 方法加载到 zip 变量中,通过 zip.file(fileName) 读取 loadorder 文件内容,试用 eval 命令动态执行脚本,文本内容转换为 js 变量...在 .zip 文件中有包含图片文件,JSZip 只能获取到图片文件 ArrayBuffer 数据,这时需要将 ArrayBuffer换为 Base64 才能够为浏览器所识别,所以这里定义了一个转换函数...init 函数中,通过 ht.Default.parseObj() 方法 3D 模型数据加载到 HT 中。...,因为采用 JSZip 无法 .zip 中文件内容写回到本地目录中,所以只能将贴图属性对应属性名称作为 HT 中 image 名称设置到 HT 中,以便 HT 模型加载时候能够获取得到模型所需要图片资源

2.4K70

Zip 压缩、解压技术在 HTML5 浏览器中应用

JSZip 是一款可以创建、读取、修改 .zip 文件 javaScript 工具。...new JSZip(data) 方法加载到 zip 变量中,通过 zip.file(fileName) 读取 loadorder 文件内容,试用 eval 命令动态执行脚本,文本内容转换为 js 变量...在 .zip 文件中有包含图片文件,JSZip 只能获取到图片文件 ArrayBuffer 数据,这时需要将 ArrayBuffer换为 Base64 才能够为浏览器所识别,所以这里定义了一个转换函数...init 函数中,通过 ht.Default.parseObj() 方法 3D 模型数据加载到 HT 中。...,因为采用 JSZip 无法 .zip 中文件内容写回到本地目录中,所以只能将贴图属性对应属性名称作为 HT 中 image 名称设置到 HT 中,以便 HT 模型加载时候能够获取得到模型所需要图片资源

2.3K20

Zip 压缩和解压技术在 HTML5 中应用

JSZip 是一款可以创建、读取、修改 .zip 文件 javaScript 工具。...new JSZip(data) 方法加载到 zip 变量中,通过 zip.file(fileName) 读取 loadorder 文件内容,试用 eval 命令动态执行脚本,文本内容转换为 js 变量...在 .zip 文件中有包含图片文件,JSZip 只能获取到图片文件 ArrayBuffer 数据,这时需要将 ArrayBuffer换为 Base64 才能够为浏览器所识别,所以这里定义了一个转换函数...init 函数中,通过 ht.Default.parseObj() 方法 3D 模型数据加载到 HT 中。...,因为采用 JSZip 无法 .zip 中文件内容写回到本地目录中,所以只能将贴图属性对应属性名称作为 HT 中 image 名称设置到 HT 中,以便 HT 模型加载时候能够获取得到模型所需要图片资源

2K80

js不借助后端,多文件拖拽压缩上传,支持选择文件夹

主要用到库是 jszip 则 则这里简单对jszip做下简单介绍,更详细功能和api请移步官网. jszip是是一个创建,读取和写入.zip文件js库, api优化,简单 浏览器支持 实现思路如下...: 1:用户选中文件或文件夹后,获取文件对象, 2:遍历获取文件对象 放入实例化zip对象中 3:使用generateAsync()方法生成文件, 通过formdata提交到服务端 代码如下: 此案例支持拖拽上传多个文件...jszip常用api是这两个 file(name, data [,options]) :创建zip文件,可以放入多个文件,支持多种文件格式String/ArrayBuffer/Uint8Array...This requires a compatible browser. arraybuffer: the result will be a ArrayBuffer containing the zip....能不能做,要想看这个库api具不具备文件转化为zip文件,通过以上两个api,可以得知这个库是支持. jszip库api 另外jszip库也支持读取本地和远程zip文件返回内部文件目录,文件名.

3.3K10

花椒前端用WebAssembly提升前端应用解压缩性能尝试

一、背景 3D形象展示项目的图片及模型等资源以压缩包形式提供,需要下载并解压后再用Three.js加载并展示出来,其中解压缩环节使用是GitHub上获得5.6k StarJS开源组件库JSZip...二、创建WebAssembly(Wasm) Emscripten是一套用于把C/C++代码编译为Wasm工具集合,通过这套工具集可以把C/C++代码编译为Wasm字节码加载进浏览器、转换为机器码运行,...,在这个方法里我们可以定义两个用于JavaScript调用Wasm内C函数方法和一个给Wasm回调传回解压后数据回调函数指针,postMessage用于通知主线程Wasm已经初始化完毕: function...测试方法是通过页面加载3次资源并渲染,资源共有10个压缩包,大小从几百k到2M+不等,整个流程包括下载、解压、加载三个部分,重点关注解压部分,对比JSZip和Wasm两个版本处理耗时数据如下(测试使用...随着JIT编译器优化启动,JSZip版本解压部分代码由于会频繁执行,所以会被JIT编译器优化,标记为warm/hot/very hot,进而转换为机器码运行,性能得到了大幅提升,与Wasm版本较为接近了

2.6K10

【笔记】618- 读《你不知道 Blob》笔记

本文通过四个问题来总结本文核心知识: Blob 是什么? Blob 怎么用? Blob 有哪些使用场景? Blob 与 ArrayBuffer 有何区别? ? 一、Blob 是什么?...图片本地预览 + 分片上传 实现本地预览: input 获取到 file 对象,通过实例化 FileReader ,赋值给变量 reader ,调用reader readAsDataURL 方法..., file 对象换为 dataURL ,然后监听 reader onload 属性,获取到读取结果 result ,然后设置为图片 src 值。...两者互转 2.1 ArrayBuffer Blob 只需将 ArrayBuffer 作为参数传入即可: const buffer = new ArrayBuffer(16); const blob...= new Blob([buffer]); 2.2 Blob ArrayBuffer 需要借助 FileReader 对象: const blob = new Blob([1,2,3,4,5]);

3.3K40

Blob、ArrayBuffer、File、FileReader和FormData区别

MDN中官方解释是:一个Blob对象就是一个包含有只读原始数据类文件对象。通俗点,我们可以直接Blob看做是一个不可修改二进制文件。...Base64 => File //base64换为blob dataURLtoBlob: function (dataurl) { var arr = dataurl.split(','),...就是一段二进制数据做了一个封装,我们拿到就是一个整体,可以看到它整体属性大小、类型;可以对其分割,但不能了解到它细节 联系:Blob可以接受一个ArrayBuffer作为参数生成一个Blob对象...file对象也是二进制对象,从属于Blob;也就是说file是Blob里一个小类,Blob属性和方法都可以用于file,而file自己也有自己特有的属性和方法。...通常表示里fileList对象 使用 这里就不做过多介绍了,可以直接参考MDN上介绍 Blob => File //blob转换为file blobToFile

4.8K21

JavaScript中二进制数据

: 8 } 这里 buffer.byteLength 属性用于获取字节长度(返回 32),直接打印 buf 结果 其中还有一个slice方法,允许内存区域一部分,拷贝生成一个新ArrayBuffer...(0, 3) 除了slice方法ArrayBuffer对象不提供任何直接读写内存方法,只允许在其上方建立视图,然后通过视图读写。...在 Nodejs 中有专门操作ArrayBuffer 对象Buffer,Buffer 类是 JavaScript Uint8Array 类子类 所以Uint8Array有的属性方法 Buffer...str).toString('base64') // strbase64编码 Buffer.from(str, 'base64').toString() // base64编码str // hex...Buffer.from(str).toString('hex') // strhex编码 Buffer.from(str, 'hex').toString() // hex编码str 封装 Base64

2.1K10

分享一些 word、excel、pdf、ppt、图片、文本等文件预览工具

blob数据流传入方法中,渲染word文档 import { defaultOptions, renderAsync } from "docx-preview"; renderAsync(buffer...通过PDFJS.getDocument处理pdf数据,返回一个对象pdfDoc 通过pdfDoc.getPage单独获取第1页数据 创建一个dom元素,设置元素画布属性 通过page.render...方法数据渲染到画布上 import * as PDFJS from "pdfjs-dist/legacy/build/pdf"; // 设置pdf.worker.js文件引入地址 PDFJS.GlobalWorkerOptions.workerSrc...excel实现前端预览 代码实现 下载exceljs、handsontable库 通过exceljs读取到文件数据 通过workbook.getWorksheet方法获取到每一个工作表数据,数据处理成一个二维数组数据...主要是通过jszip库,加载二进制文件,再经过一些列处理处理转换实现预览效果,实现起来比较麻烦,就不贴代码了,感兴趣可以下载代码查看。

1.9K30

Node zip压缩和解压缩

zip 对象中,而且需要把内容也手动添加,再使用写文件操作把内存中 zip 对象转成物理存储。...", zipfolder, function (err) { if (err) throw err; }); JSZip里面也有个folder方法,但它只是用来切换zip对象内部虚拟路径,比如zip.folder...-C 压缩文件中文件名称区分大小写。 -j 不处理压缩文件中原有的目录路径。 -L 压缩文件中全部文件名改为小写。 -M 输出结果送到 more 程序处理。...-P 使用 zip 密码选项。 -q 执行时不显示任何信息。 -s 文件名中空白字符转换为底线字符。 -V 保留 VMS 文件版本信息。...-n 特定字符串 不压缩具有特定字尾字符串文件 -o 压缩文件内所有文件最新变动时间设为压缩时候时间 -q 安静模式,在压缩时候不显示指令执行过程 -r 指定目录下所有子目录以及文件一起处理

2.5K20

前端实现word、excel、pdf、ppt、mp4、图片、文本等文件预览

blob数据流传入方法中,渲染word文档 import { defaultOptions, renderAsync } from "docx-preview"; renderAsync(buffer...处理pdf数据,返回一个对象pdfDoc 通过pdfDoc.getPage单独获取第1页数据 创建一个dom元素,设置元素画布属性 通过page.render方法数据渲染到画布上 import...= require("pdfjs-dist/legacy/build/pdf.worker.entry.js"); // data是一个ArrayBuffer格式,也是一个buffer流数据 PDFJS.getDocument...通过exceljs读取到文件数据 通过workbook.getWorksheet方法获取到每一个工作表数据,数据处理成一个二维数组数据 引入@handsontable/vue组件HotTable...主要是通过jszip库,加载blob文件流,再经过一些列处理处理转换实现预览效果 实现效果 总结 主要介绍了word、excel、pdf文件实现预览方式,前端实现预览最好效果还是PDF,不会出现一些文字错乱和乱码问题

1.8K50
领券