Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从安卓摄像头上传照片,并在Ionic/Angular上显示FormData_Android_Angular_Ionic Framework_Multipartform Data - Fatal编程技术网

Android 如何从安卓摄像头上传照片,并在Ionic/Angular上显示FormData

Android 如何从安卓摄像头上传照片,并在Ionic/Angular上显示FormData,android,angular,ionic-framework,multipartform-data,Android,Angular,Ionic Framework,Multipartform Data,我目前正在开发一个Android应用程序,用户可以在其中拍摄自己的照片,并将其上传到一个补丁API端点,该端点将收听关键的“阿凡达” 我正在使用和插件来处理它 下面是拍照时触发的功能 takePicture() { const options: CameraOptions = { quality: 50, destinationType: this.camera.DestinationType.FILE_URI, encodingType: this.

我目前正在开发一个Android应用程序,用户可以在其中拍摄自己的照片,并将其上传到一个补丁API端点,该端点将收听关键的“阿凡达”

我正在使用和插件来处理它

下面是拍照时触发的功能

takePicture() {
    const options: CameraOptions = {
      quality: 50,
      destinationType: this.camera.DestinationType.FILE_URI,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE,
      correctOrientation: true,  // Corrects Android orientation quirks
      allowEdit: false, // Post process aanpassingen
      sourceType: this.camera.PictureSourceType.CAMERA // Pak de selfie camera
    };
    this.camera.getPicture(options).then((imageData) => {
      const formData = new FormData();
      formData.append('avatar', imageData, 'pic.jpg');
      this.web.updateUserInfo(formData).subscribe(() => {});
    }, (err) => {
      console.error('Camera Error: ' + err);
    });
  }
下面是API处理

updateUserInfo(newData: any) {
        return new Observable((obs) => {
                this.http2.patch('localhost/user', {newData}, {
                    'X-Subdomain': 'host',
                    'X-Token': this.apiKey,
                }).then(() => {console.log('Camera API success!'); obs.next(); }).catch(error => {
                    console.error(error);
                });
        });
    }

没有给出错误,因此我很难看到问题所在。我几乎没有使用Cordova和Ionic的经验,所以这对我来说是全新的。

问题是
destinationType:this.camera.destinationType.FILE\u URI,

您正在通过http发送文件url,而不是图像的base64

更改您的目的地类型:
destinationType:this.camera.destinationType.DATA\u URL,

数据\u URL返回base64编码字符串。数据URL可能占用大量内存,导致应用程序崩溃或内存不足错误。如果可能,请使用文件URI或本机URI

更新

在本视频中,您可以检查如何将base64作为文件发送到api


问题是
destinationType:this.camera.destinationType.FILE\u URI,

您正在通过http发送文件url,而不是图像的base64

更改您的目的地类型:
destinationType:this.camera.destinationType.DATA\u URL,

数据\u URL返回base64编码字符串。数据URL可能占用大量内存,导致应用程序崩溃或内存不足错误。如果可能,请使用文件URI或本机URI

更新

在本视频中,您可以检查如何将base64作为文件发送到api


应用程序方面一切正常。Cordova摄像头为您提供base64图像。您必须在服务器端或要显示映像的位置进行调试。应用程序端一切正常。Cordova摄像头为您提供base64图像。您必须在服务器端或要显示映像的位置进行调试。是否需要将此Base64字符串放入formData.append以及当前的运行方式?在检查Swagger以获取API详细信息时,API需要参数类型为:FormData,数据类型为:file。是否需要将此Base64字符串放入FormData.append中,就像当前一样?在检查Swagger以获取API详细信息时,API要求参数类型为FormData,数据类型为file。