Skip to content

whyming/react-native-zip-archive

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

React Native Zip Archivenpm npm

Zip archive utility for react-native

Important

If you're using react-native after v0.40.0, please install this package via the next branch. Issues and PR are welcome to make it into master and released.

Installation

npm install react-native-zip-archive --save

Getting started - iOS

  1. In Xcode, in the project navigator right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-zip-archive and add RNZipArchive.xcodeproj
  3. Add libRNZipArchive.a (from 'Products' under RNZipArchive.xcodeproj) to your project's Build PhasesLink Binary With Libraries phase
  4. Add the libz library to your target
  5. Look for Header Search Paths and make sure it contains both $(SRCROOT)/../react-native/React and $(SRCROOT)/../../React - mark both as recursive
  6. Run your project (CMD+R)

Warning: If you're using rnpm to link this module, you also need manually link libz library to your target otherwise your project wouldn't compile.

Getting started - Android

  • Edit android/settings.gradle to look like this (without the +):

    rootProject.name = 'MyApp'
    
    include ':app'
    
    + include ':react-native-zip-archive'
    + project(':react-native-zip-archive').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-zip-archive/android')
  • Edit android/app/build.gradle (note: app folder) to look like this:

    apply plugin: 'com.android.application'
    
    android {
      ...
    }
    
    dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      compile 'com.android.support:appcompat-v7:23.0.0'
      compile 'com.facebook.react:react-native:0.16.+'
    + compile project(':react-native-zip-archive')
    }
  • Edit your MainActivity.java (deep in android/app/src/main/java/...) to look like this (note two places to edit):

    package com.myapp;
    
    + import com.rnziparchive.RNZipArchivePackage;
    
    ....
    
      @Override
      protected List<ReactPackage> getPackages() {
        return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
    +     new RNZipArchivePackage()
        );
      }
    
    }

Usage

require it in your file

const ZipArchive = require('react-native-zip-archive')

you may also want to use something like react-native-fs to access the file system (check its repo for more information)

const RNFS = require('react-native-fs')

API

unzip(source: string, target: string): Promise

unzip from source to target

Example

let sourcePath = 'path_to_your_zip_file'
let targetPath = RNFS.DocumentDirectoryPath

ZipArchive.unzip(sourcePath, targetPath)
.then(() => {
  console.log('unzip completed!')
})
.catch((error) => {
  console.log(error)
})

unzipAssets(assetPath: string, target: string): Promise

unzip file from Android assets folder to target path

Note: Android only.

assetPath is the relative path to the file inside the pre-bundled assets folder, e.g. folder/myFile.zip. Do not pass an absolute directory.

const assetPath = 'folder/myFile.zip'
const targetPath = RNFS.DocumentDirectoryPath

ZipArchive.unzipAssets(assetPath, targetPath)
.then(() => {
  console.log('unzip completed!')
})
.catch((error) => {
  console.log(error)
})

subscribe(callback: ({progress: number})): EmitterSubscription

Subscribe to unzip progress callbacks. Useful for displaying a progress bar on your UI during the unzip process.

Your callback will be passed an object with the following fields:

  • progress (number) a value from 0 to 1 representing the progress of the unzip method. 1 is completed.

Note: Remember to unsubscribe! Run .remove() on the object returned by this method.

componentWillMount() {
  this.zipProgress = ZipArchive.subscribe((e) => {
    this.setState({ zipProgress: e.progress })
  })
}

componentWillUnmount() {
  // Important: Unsubscribe from the progress events
  this.zipProgress.remove()
}

About

Zip archive utility for react-native

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 80.7%
  • Objective-C 9.8%
  • C++ 6.8%
  • Java 2.2%
  • Other 0.5%