首页 > 解决方案 > ionic 4 cordova 相机获取带有照片库的 fileURI

问题描述

我可以使用 SOURCETYPE 相机获得 base64,但不能使用 PHOTOLIBRARY。它看起来像 webview 或 resolveLocalFileSystemURL 的问题。我不想使用 DATA.URL 导致应用程序崩溃。

期望:ResolveLocalFileSystemURL 应该返回实际的文件路径

回购:https ://github.com/indraraj26/cordova-testing

takePicture(source: string) {
    const options: CameraOptions = {
      quality: 100,
      destinationType: this.camera.DestinationType.FILE_URI,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE
    };

    if (source == "1") {
      options.sourceType = this.camera.PictureSourceType.CAMERA;
    } else if (source == "2") {
      options.sourceType = this.camera.PictureSourceType.PHOTOLIBRARY;
    }
    this.camera.getPicture(options).then(
      async imageData => {
        console.log(this.webView.convertFileSrc(imageData), "convertFileSrc");
        this.imgUrl = this.webView.convertFileSrc(imageData);
        alert(this.webView.convertFileSrc(imageData));
        console.log(imageData, "imageData");
        alert(imageData);
        let blob = await fetch(this.webView.convertFileSrc(imageData)).then(r =>
          r.blob()
        );
        console.log(blob, "blob");
        alert(blob);
        this._base64.encodeFile(imageData).then(base64str => {
          console.log(base64str);
          alert(base64str);
        });

        window.resolveLocalFileSystemURL(imageData, fileEntry => {
          fileEntry.file(file => {
            console.log(file, "window file");
            alert(file + "window file");
            console.log(file.localURL, "localUrl");
            this._base64
              .encodeFile(file.localURL)
              .then(base64LocalURL => {
                console.log(base64LocalURL, "base64LocalUrl");
              })
              .catch(e => console.log(e, "base64localError"));
          });
        });

        // if (imageData.indexOf("file://") == -1) {
        //   imageData = "file://" + imageData;
        // }
        this._file.resolveLocalFilesystemUrl(imageData).then(entry => {
          console.log(entry);
          alert("entry" + entry);
          // console.log(
          //   entry.toInternalURL(),
          //   entry.toURL(),
          //   entry.fullPath,
          //   entry.nativeURL
          // );
          // if (imageData.indexOf("file://") == -1) {
          //   imageData = "file://" + imageData;
          // }

          // entry.file(rfile => {
          //   console.log(rfile, "real file");
          //   alert("real file" + rfile);
          // });
        });
      },
      err => {
        console.log(err);
      }
    );
  }

带相机 带相机

与照片库 在此处输入图像描述

标签: cordovaionic-frameworkcordova-pluginsionic4ionic-native

解决方案


推荐阅读