проблемы с обработкой zip-файлов с помощью javascript в реагирующем - PullRequest
0 голосов
/ 15 октября 2019

Бэкэнд отправляет мне массив из 5 URL-адресов. Я должен загрузить каждый 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
})

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

 <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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...