当前位置: 首页 > 工具软件 > jszip > 使用案例 >

jszip压缩服务器文件,JSZip压缩与解压的基本使用

巫马山
2023-12-01

//相关api介绍,具体可参考jszip源码中的注释

/**

* 从文档中读取文件

*

* @param Path 要读取文件的相对路径

* @return File matching path, null if no file found

*/

JSZip.file(path: string): JSZip.JSZipObject | null;

/**

*把读取的文件内容以哪中格式展示出来

*OutputType: base64,

string,

text,

binarystring,

array,

uint8array,

arraybuffer,

blob,

nodebuffer,

支持以上类型

返回一个Promise对象,将结果给出来

*/

JSZipObject.async(type: T, onUpdate?: OnUpdateCallback): Promise;

/**

* 添加一个文件到文档中

*

* @param path 文件的相对路径

* @param data 文件的内容

* @param options Optional information about the file

* @return JSZip object

* 具体可参考下面的使用案例

*/

JSZip.file(path: string, data: InputByType[T] | Promise, options?: JSZip.JSZipFileOptions): this;

JSZip.file(path: string, data: null, options?: JSZip.JSZipFileOptions & { dir: true }): this;

/**

* 返回一个JSZip的实例,并且会在根目录新建一个文件夹

*

* @param name 文件夹的名字

* @return New JSZip object with the given folder as root or null

*/

folder(name: string): JSZip | null;

/**

* 异步生成一个文档,返回一个Promise

*

* @param options Optional options for the generator

* @param onUpdate The optional function called on each internal update with the metadata.

* @return The serialized archive

*/

generateAsync(options?: JSZip.JSZipGeneratorOptions, onUpdate?: OnUpdateCallback): Promise;

/**

* 异步加载一个zip文件

*

* @param data Serialized zip file

* data的类型可选:

* interface InputByType {

base64: string;

string: string;

text: string;

binarystring: string;

array: number[];

uint8array: Uint8Array;

arraybuffer: ArrayBuffer;

blob: Blob;

stream: NodeJS.ReadableStream;

}

type InputFileFormat = InputByType[keyof InputByType];

*

* @param options 反序列化的配置选项

* @return Returns promise

*/

loadAsync(data: InputFileFormat, options?: JSZip.JSZipLoadOptions): Promise;

压缩文件

需用到jszip,file-saver 两个库,可参考以下案例以及上方的api介绍

//官方案例

var zip = new JSZip();

zip.file("Hello.txt", "Hello World\n");

var img = zip.folder("images");

img.file("smile.gif", imgData, {base64: true});

zip.generateAsync({type:"blob"}).then(function(content) {

// see FileSaver.js

saveAs(content, "example.zip");

});

解压文件

let zip = new JSZip();

var xhr = new XMLHttpRequest();

xhr.open('GET', 'http://localhost:8000/book.zip', true);

xhr.responseType = 'blob';

xhr.onreadystatechange = function() {

if (xhr.readyState === 4 && xhr.status === 200 || xhr.status === 304) {

zip.loadAsync(xhr.response, {optimizedBinaryString: true}).then(res => {

//res.files里包含整个zip里的文件描述、目录描述列表

//res本身就是JSZip的实例

for (let key in res.files) {

//判断是否是目录

if (!res.files[key].dir) {

//找到我们压缩包所需要的json文件

if (/\.(json)$/.test(res.files[key].name)) {

res.file(res.files[key].name).async('string')

.then(content => {

//得到我们需要的JSON文件内容

console.log(JSON.parse(content))

})

}

}

}

}).catch(err => {

console.log(err)

});

}

};

xhr.send();

 类似资料: