如何使用JSZip(How to use JSZip)
2017-07-25 09:56
519 查看
最近在用jszip来压缩script脚本以及相关的配置文件,所以详细了解了下它 ,顺便翻译了下自己需要的文章(请注意,因为只是自己记录看,所以翻译很随便,有用软件翻译并且进行相应的修改了,不喜欢的可以不看)
http://stuk.github.io/jszip/
JSZip是一个用于创建,阅读和编辑.zip文件的JavaScript库,具有友好而简单的API。
下面简单地翻译下这里的文章 http://stuk.github.io/jszip/documentation/examples.html
如何使用JSZip(How to use JSZip)
JSZip的一个实例代表一组文件。您可以添加,删除,修改它们。您还可以导入现有的zip文件或生成一个。
如果您使用node AMD加载程序(例如RequireJS),JSZip将注册自己:您只需将js文件放在正确的位置,或者配置加载程序(请参阅此处的RequireJS)。
var JSZip = require("jszip");
var zip = new JSZip();
在这个实例上,我们可以使用.file(name,content)和.folder(name)来添加(更新)文件和文件夹。他们返回当前的JSZip实例,以便您可以链接调用。// create a file
zip.file("hello.txt", "Hello[p my)6cxsw2q");
// oops, cat on keyboard. Fixing !
zip.file("hello.txt", "Hello World\n");
// create a file and a folder
zip.file("nested/hello.txt", "Hello World\n");
// same as
zip.folder("nested").file("hello.txt", "Hello World\n");使用.folder(name),返回的对象具有不同的根:如果在此对象上添加文件,则将它们放在创建的子文件夹中。这只是一个视图,添加的文件也将在“根”对象中。
var photoZip = zip.folder("photos");
// this call will create photos/README
photoZip.file("README", "a folder with photos");您可以使用.file(name)及其its getter访问文件内容:
zip.file("hello.txt").async("string").then(function (data) {
// data is "Hello World\n"
});
if (JSZip.support.uint8array) {
zip.file("hello.txt").async("uint8array").then(function (data) {
// data is Uint8Array { 0=72, 1=101, 2=108, more...}
});
}您也可以用.remove(name)删除文件或文件夹:
var promise = null;
if (JSZip.support.uint8array) {
promise = zip.generateAsync({type : "uint8array"});
} else {
promise = zip.generateAsync({type : "string"});
}var promise = null;
if (JSZip.support.uint8array) {
promise = zip.generateAsync({type : "uint8array"});
} else {
promise = zip.generateAsync({type : "string"});
}
var new_zip = new JSZip();
// more files !
new_zip.loadAsync(content)
.then(function(zip) {
// 你现在已经有加载的zip中包含的每个文件
new_zip.file("hello.txt").async("string"); // a promise of "Hello World\n"
});
http://stuk.github.io/jszip/
JSZip是一个用于创建,阅读和编辑.zip文件的JavaScript库,具有友好而简单的API。
下面简单地翻译下这里的文章 http://stuk.github.io/jszip/documentation/examples.html
如何使用JSZip(How to use JSZip)
JSZip的一个实例代表一组文件。您可以添加,删除,修改它们。您还可以导入现有的zip文件或生成一个。
获取对象
在浏览器中
对于浏览器,有两个有趣的文件 :dist/jszip.jsand
dist/jszip.min.js(实际中用一个,min一般是正式发布使用)。
如果您使用node AMD加载程序(例如RequireJS),JSZip将注册自己:您只需将js文件放在正确的位置,或者配置加载程序(请参阅此处的RequireJS)。
在nodejs中
在nodejs中,您可以使用require:
var JSZip = require("jszip");
基本操作
第一步是创建一个JSZip的实例:var zip = new JSZip();
在这个实例上,我们可以使用.file(name,content)和.folder(name)来添加(更新)文件和文件夹。他们返回当前的JSZip实例,以便您可以链接调用。// create a file
zip.file("hello.txt", "Hello[p my)6cxsw2q");
// oops, cat on keyboard. Fixing !
zip.file("hello.txt", "Hello World\n");
// create a file and a folder
zip.file("nested/hello.txt", "Hello World\n");
// same as
zip.folder("nested").file("hello.txt", "Hello World\n");使用.folder(name),返回的对象具有不同的根:如果在此对象上添加文件,则将它们放在创建的子文件夹中。这只是一个视图,添加的文件也将在“根”对象中。
var photoZip = zip.folder("photos");
// this call will create photos/README
photoZip.file("README", "a folder with photos");您可以使用.file(name)及其its getter访问文件内容:
zip.file("hello.txt").async("string").then(function (data) {
// data is "Hello World\n"
});
if (JSZip.support.uint8array) {
zip.file("hello.txt").async("uint8array").then(function (data) {
// data is Uint8Array { 0=72, 1=101, 2=108, more...}
});
}您也可以用.remove(name)删除文件或文件夹:
zip.remove("photos/README"); zip.remove("photos"); // same as zip.remove("photos"); //通过删除文件夹,您也删除其内容。
生成一个zip文件
使用.generateAsync(options)或.generateNodeStream(options)可以生成一个zip文件(不是一个真实的文件,而是在内存中的表示)。查看此页面了解如何写/给文件给用户的更多信息。var promise = null;
if (JSZip.support.uint8array) {
promise = zip.generateAsync({type : "uint8array"});
} else {
promise = zip.generateAsync({type : "string"});
}var promise = null;
if (JSZip.support.uint8array) {
promise = zip.generateAsync({type : "uint8array"});
} else {
promise = zip.generateAsync({type : "string"});
}
读zip文件
使用.loadAsync(data)可以加载zip文件。检查此页面以查看如何正确执行(这似乎更棘手)。var new_zip = new JSZip();
// more files !
new_zip.loadAsync(content)
.then(function(zip) {
// 你现在已经有加载的zip中包含的每个文件
new_zip.file("hello.txt").async("string"); // a promise of "Hello World\n"
});
相关文章推荐
- HowTo use linux laptop in presentations 【如何在Linux系统上使用投影仪】
- [Ubuntu] 如何在VirtualBox OSE中使用share folders -- How to use the share folders in VirtualBox OSE
- 为何以及如何使用Netlink Socket ( Why and How to Use Netlink Socket)
- 如何使用spy ++ (How to use Spy ++)
- 如何使用spy ++ (How to use Spy ++)
- 如何使用spy ++ (How to use Spy ++)
- 如何使用spy ++ (How to use Spy ++)
- How to use ComboBox Control in VC++ - 在VC中如何使用 ComboBox 控件
- 如何使用代码美化器Uncrustify (How to use code beautifier Uncrustify)
- 如何使用RDebug - How to use RDebug
- (译)如何使用SocketAsyncEventArgs类(How to use the SocketAsyncEventArgs class)
- 如何使用表维护工具。how to use the table extent maintenance tool
- 如何使用代码美化器Uncrustify (How to use code beautifier Uncrustify)
- 译文:如何使用SocketAsyncEventArgs类(How to use the SocketAsyncEventArgs class)
- 为何以及如何使用Netlink Socket ( Why and How to Use Netlink Socket)
- All-In-One Code Framework(AIO): 如何编写VC++代码来使用COM组件 (How to use COM in a VC++ client)
- [转]How to use String.Format in PowerShell?(如何在PowerShell中使用string.format?)
- 如何使用 How to use json-lib
- 如何在python中使用*args,**kwargs (How to use *args and **kwargs in Python)
- 如何在QT for S60 中使用pthread库(Carbide.c++) (How to use pthread in QT4.6 for S60)