Android 如何从安卓摄像头上传照片,并在Ionic/Angular上显示FormData
我目前正在开发一个Android应用程序,用户可以在其中拍摄自己的照片,并将其上传到一个补丁API端点,该端点将收听关键的“阿凡达” 我正在使用和插件来处理它 下面是拍照时触发的功能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.
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。