Размер файла изображения увеличивается при загрузке в FireBase через сборщик изображений expo реагировать нативно с помощью XMLHttpRequest - PullRequest
0 голосов
/ 09 января 2019

У меня очень странная проблема, связанная с увеличением размера моего изображения при загрузке в Firebase. Я зарегистрировал размер файла перед загрузкой, он показывает тот же размер, но после загрузки размер файла увеличивается. Также изображение не повреждено. Пожалуйста, помогите ..

Загрузка в код Firebase:

 async uploadImageAsync(uri, passedParameter, ItemName) {
    const blob = await new Promise((resolve, reject) => {
      const xhr = new XMLHttpRequest();
      xhr.onload = function() {
        resolve(xhr.response);
      };
      xhr.onerror = function(e) {
        console.log(e);
        reject(new TypeError("Network request failed"));
      };
      xhr.responseType = "blob";
      xhr.open("GET", uri, true);
      xhr.send(null);
    });

    const ref = firebase
      .storage()
      .ref()
      .child("CategoryDescription" + "/" + passedParameter + "/" + ItemName);

    const snapshot = await ref.put(blob);

    blob.close();
    const downloadUrl = await snapshot.ref.getDownloadURL();

    return downloadUrl;
  }

** Выберите код изображения: **

 async _pickImage() {
    const { CAMERA, CAMERA_ROLL } = Permissions;
    const permissions = {
      [CAMERA]: await Permissions.askAsync(CAMERA),
      [CAMERA_ROLL]: await Permissions.askAsync(CAMERA_ROLL)
    };

    if (
      permissions[CAMERA].status === "granted" &&
      permissions[CAMERA_ROLL].status === "granted"
    ) {
      var pickerResult = await ImagePicker.launchImageLibraryAsync({
        quality: 0.1
      });

      if (!pickerResult.cancelled) {
        console.log(pickerResult);
        this.setState({
          itemImage: pickerResult.uri
        });

** На нажатой кнопке код **

  handleConfirmAddItems = () => {
    var passedParameter = this.params.item.key;
    const { ItemName, ItemPrice, ItemDesc, ItemWeight, itemImage } = this.state;


      {
        itemImage !== "" &&
          this._handleImagePicked(itemImage, passedParameter, ItemName);
      }

      writeUrlToDB(
        itemImage,
        passedParameter,
        ItemName,
        ItemDesc,
        ItemPrice,
        ItemWeight
      );
    }
  };

** Дескриптор выбранной картинки **

 async _handleImagePicked(itemImage, passedParameter, ItemName) {
    try {
      const uploadUrl = await this.uploadImageAsync(
        itemImage,
        passedParameter,
        ItemName
      );
      this.setState({ itemImage: uploadUrl });
      console.log("itemIma", uploadUrl);
    } catch (e) {
      console.log(e);
      alert("Upload failed, sorry :(");
    }
  }

Пожалуйста, помогите .. Я в большом стрессе

1 Ответ

0 голосов
/ 17 января 2019

Ошибка в Image Picker .. Это проблема в случае iOS Simulator, в устройстве Android работает нормально:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...