javascript - Ionic/Firebase 图像选择器/裁剪和上传问题

标签 javascript firebase ionic-framework file-upload ionic4

我试图实现选择图像并裁剪它的功能。之后我想将其上传到 firebase。 由于某种原因它根本不起作用并且“readAsArrayBuffer”不执行 .

我对此很陌生,所以我会感谢一些帮助:)

谢谢

这是我尝试过的:

“newPath”看起来像这样:

  "file:///storage/emulated/0/Android/data/io.ionic.starter/cache/
  1565766305015-cropped.jpg?1565766307602"

“nameFile”看起来像这样:

  "1565766305015-cropped.jpg".

-

    constructor(private imagePicker: ImagePicker, private crop: Crop,
        private file: File) {
          let storageDb = firebase.storage();
          this.storageRef = storageDb.ref();
      }


    pickImage() {
      this.imagePicker.getPictures(this.imagePickerOptions).then((results) 
    => {
        // tslint:disable-next-line: prefer-for-of
        for (let i = 0; i < results.length; i++) {
          this.cropImage(results[i]);
        }
      }, (err) => {
        alert(err);
      });
    }  


    cropImage(imgPath) {
        this.crop.crop(imgPath, { quality: 50 })
          .then(
            newPath => {
              try {
                let n = newPath.lastIndexOf("/");
                let x = newPath.lastIndexOf("g");
                let nameFile = newPath.substring(n + 1, x + 1);
                this.file.readAsArrayBuffer(newPath, nameFile).then((res) => {
                  let blob = new Blob([res], { type: "image/jpeg" });
                  var uploadTask = this.storageRef.child('images/' + this.event.id).put(blob);
                  uploadTask.on('state_changed', (snapshot) => {
                    let url = uploadTask.snapshot.downloadURL;
                    this.croppedImagepath = url;
                  }, (error) => {
                    alert("error: " + error);
                  }, () => { 
                    alert("uploaded");
                    let url = uploadTask.snapshot.downloadURL;
                    this.croppedImagepath = url;
                  })
                })
              }
              catch (z) {
                alert('error beim erstellen des blobs' + z);
              }
            },
            error => {
              alert('Error cropping image' + error);
            }
          );
      }

最佳答案

好奇,你从哪里得到这个片段?实际上还出现了另一个问题 they are using the File class differently :

  readFile(file: any) {
    const reader = new FileReader();
    reader.onloadend = () => {
      const formData = new FormData();
      const imgBlob = new Blob([reader.result], {
        type: file.type
      });
      formData.append('file', imgBlob, file.name);
      this.uploadImageData(formData);
    };
    reader.readAsArrayBuffer(file);
  }

关于javascript - Ionic/Firebase 图像选择器/裁剪和上传问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57489763/

相关文章:

javascript - 谷歌地图 API V3 Over_Query_Limit

javascript - 如何使用 lodash/underscore 按多个嵌套字段排序?

javascript - Odoo10/Odoo11动态进度条-在python中触发javascript函数

java - 从 firebase 获取数据并添加到卡片 View

android - 如何确定具有特定 token 的设备是否与 firebase android 在线?

javascript - 将 AngularJS 货币区域设置添加到末尾

javascript - 无法在 if 语句中设置状态

javascript - 如果我只有 PDF URL,如何以附件形式发送 PDF

angular - Dom渲染问题ngAfterViewInit ionic 2

ionic-framework - 如何在桌面浏览器上将我的 PWA 显示为移动应用程序