【问题标题】:File Image size increases while uploading to firebase through expo image picker react native using XMLHttpRequest通过expo图像选择器上传到firebase时文件图像大小增加使用XMLHttpRequest进行本机反应
【发布时间】:2019-01-09 16:39:13
【问题描述】:

我面临一个非常奇怪的问题,即上传到 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 :(");
    }
  }

请帮忙..我压力很大

【问题讨论】:

    标签: image firebase react-native expo


    【解决方案1】:

    图像选择器中的一个错误。这是 iOS 模拟器的问题,在 Android 设备中它工作正常:)

    【讨论】:

      猜你喜欢
      • 2020-07-07
      • 2020-04-23
      • 2018-05-28
      • 2022-10-06
      • 1970-01-01
      • 2022-08-19
      • 2020-09-03
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多