Как скопировать заархивированный файл из папки «Ресурсы» в DocumentDirectoryPath? - PullRequest
0 голосов
/ 06 ноября 2019

В реактивном проекте у меня есть zip-файл, который находится в папке android_assets. Я хочу распаковать эту папку и скопировать ее в DocumentDirectoryPath. Я импортировал response-native-zip-archive и использовал unzipAssets, но, похоже, он не работает. Я использовал следующий код, но получаю сообщение об ошибке: «./ICF-Package» не может быть открыт.

const assetPath = './ICF-Package.zip' const targetPath = ${DocumentDirectoryPath}/ICF-Package.zip

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

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете установить его и попытаться устранить проблему.

  1. $ npm install react-native-fetch-blob
  2. $ react-native link react-native-fetch-blob
import RNFetchBlob from 'react-native-fetch-blob';
import { unzip } from 'react-native-zip-archive';

let dirs = RNFetchBlob.fs.dirs
const documentPath = dirs.DocumentDir
const resourceUrl = 'file:///android_asset/target.zip'

    downloadResource = () => {

        // Set the path to store on the device
        const dirs = RNFetchBlob.fs.dirs.DocumentDir
        const homePath = dirs + '/target.zip'

        RNFetchBlob
            .config({
                path: homePath
            })
            .fetch('GET', resourceUrl)
            .progress((received, total) => {
                const percentage = Math.floor(received / total * 10000) / 100 + '%'
                console.log(percentage)
            })
            .then(resourceFile => {
                console.log('target.zip file download success')

                this.unzip(resourceFile);
            })
            .catch((errorMessage, statusCode) => {
                console.log(errorMessage);
            })
    }


    unzip = resourceFile => {
        const resourcePath = resourceFile.path()
        unzip(resourcePath, documentPath)
            .then(path => {
                console.log(`unzip sucess: ${path}`)
            })
    }

...