2015-08-08 51 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())我對文件插件非常熟悉,因此我只知道 –