2015-08-08 58 views
1

我正在使用Cordova在iOS上创建移动应用程序。我想上传多个文件到服务器,而不是一个接一个地发送它们。我想将这些文件压缩成一个'.zip'文件并将其上传到服务器。Cordova - iOS上的Zip文件和文件夹

我搜索的科尔多瓦插件,但我发现只有这些插件,不解决我的问题:

请帮我找到拉链iOS上的文件和文件夹插件,或者给我如何使用第一个插件的例子。

回答

4

我们设法使用JSZip javascript API和cordova file plugin解压缩,修改和压缩文件。它也应该从头开始创建一个zip文件。实际上并不需要使用本地代码进行压缩操作(尽管它很可能更快),只能读取压缩和编写压缩文件的文件。因此,使用不特别为cordova设计的javascript API是很好的。

过程 如果你想尝试JSZip +文件插件的方法,这里是我们如何使用它的工作快速概要:

  1. 我们使用该文件的插件来读取文件作为二进制文件。如果你足够幸运只有文本文件,你也可以阅读文本,但这种方式不那么灵活。请注意,要读取这些文件,您需要从其FileEntry中获取File对象,这将需要使用DirectoryEntry s在文件系统中进行导航。如果您不熟悉该文件插件,请查看其文档以执行此步骤。
  2. 我们创建一个JSZip对象。
  3. 根据需要操作JSZip对象。您可以在zip中创建文件夹,添加文件,删除一些文件,修改某些内容。如你所见。他们的文档给出了简单而好的例子。
  4. 使用JSZip JSZip#generate()方法生成zip二进制内容,指定类型。如果你想用它创建一个实际的文件,我们注意到string和arraybuffer可以用文件插件的写入方法(在创建文件后)写入,而无需在iOS上转换它,但不是uint8array(我们没有尝试其他代类型)。
  5. 根据需要处理二进制文件。这与您读过实际压缩文件的二进制文件相同。



PS:这个文件的插件对cordova.apache.org一些过时的文档。虽然其中的示例可能有用,但请注意,其中一些示例不再有效。例如,resolveLocalFileSystemURI()现在是resolveLocalFileSystemURL()

+0

对于不赞成使用的方法(例如resolveLocalFileSystemURI())我对文件插件非常熟悉,因此我只知道 –