проблемы с обработкой zip-файлов с помощью javascript в react-native

Бэкэнд отправляет мне массив из 5 URL-адресов zip-файлов. Мне нужно загрузить каждый zip-файл в свое приложение для Android, а затем использовать файлы, которые находятся внутри zip. Я использую библиотеку JSZIP, но не уверен, что с помощью JSZIP я могу загружать и управлять каждым файлом в моем приложении. Этот код делал это, пока я не понял, что, возможно, мне стоит загрузить и сохранить zip-архивы в приложении и управлять ими. Мне нужно только руководство о том, как я могу это сделать

Это мой магазин с mobx

import { observable, decorate } from "mobx";
import FetchUser from "../restProviders/peticiones";
import JSZip from "jszip";
import JSZipUtils from "jszip-utils";

export default class AssetsStore {
  urlZip;
  data;
  obj;
  mtl;
  png1;
  png2;
  png3;
  isCharged;

  rest = new FetchUser();

  constructor() {
    this.data = [];
    this.urlZip = [];
    this.obj = "";
    this.mtl = "";
    this.png1 = "";
    this.png2 = "";
    this.png3 = "";
    this.isCharged = true;
    this.getZip()
  }

  getContents(url) {
    var promise = new JSZip.external.Promise(function(resolve, reject) {
      JSZipUtils.getBinaryContent(
        url,
        function(err, data) {
          if (err) {
            reject(err);
          } else {
            resolve(data);
          }
        }
      );
    });
    promise.then(JSZip.loadAsync).then( (zip) => {
      return (this.png1 = zip.file("/go/src/mochila_icono.png").name,
      this.png2 = zip.file("/go/src/voucher_top.png").name,
      this.png3 = zip.file("/go/src/texture_3d.png").name,
      this.obj =  zip.file("/go/src/objeto_3d.obj").name,
      this.mtl =  zip.file("/go/src/objeto_3d.mtl").name,
      this.isCharged = false,
      console.log(zip.files)
      )
    });
  }

  async getZip() {
    try {
      const zip = await this.rest.getAssets();
      console.log(zip.data)
      zip.data.Content.filter(el => {
        this.urlZip.push(el.zipFile);
        return this.urlZip;
      });
      this.getContents(this.urlZip[0]);
    } catch (err) {
      console.log(err);
    }
  }
}

decorate(AssetsStore, {
  urlZip: observable,
  data: observable,
  obj: observable,
  mtl: observable,
  png1: observable,
  png2: observable,
  png3: observable,
  rest: observable
})

я должен использовать это здесь. В "источнике" я должен указать путь, но это дает мне консольную ошибку, в которой говорится, что корень файла не может быть найден, и это потому, что я не загрузил его

 <Viro3DObject
             source={this.props.arSceneNavigator.viroAppProps.obj}
             resources={[
               this.props.arSceneNavigator.viroAppProps.mtl,
               this.props.arSceneNavigator.viroAppProps.png1,
               this.props.arSceneNavigator.viroAppProps.png2,
               this.props.arSceneNavigator.viroAppProps.png3]}

            position={[-.5, .5, -1]}
            scale={[.2, .2, .2]}
            type="OBJ" />

0 ответов

Другие вопросы по тегам