Zip archive utility for react-native
npm install react-native-zip-archive --save
react-native link react-native-zip-archive
import it into your code
import { zip, unzip, unzipAssets, subscribe } from '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)
import { MainBundlePath, DocumentDirectoryPath } from 'react-native-fs'
zip(source: string, target: string): Promise
zip source to target
Example
const targetPath = `${DocumentDirectoryPath}/myFile.zip`
const sourcePath = DocumentDirectoryPath
zip(sourcePath, targetPath)
.then((path) => {
console.log(`unzip completed at ${path}`)
})
.catch((error) => {
console.log(error)
})
unzip(source: string, target: string): Promise
unzip from source to target
Example
const sourcePath = `${DocumentDirectoryPath}/myFile.zip`
const targetPath = DocumentDirectoryPath
unzip(sourcePath, targetPath)
.then((path) => {
console.log(`unzip completed at ${path}`)
})
.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 = `${DocumentDirectoryPath}/myFile.zip`
const targetPath = DocumentDirectoryPath
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 = subscribe((e) => {
this.setState({ zipProgress: e.progress })
})
}
componentWillUnmount() {
// Important: Unsubscribe from the progress events
this.zipProgress.remove()
}