Ionic 3 firebase无法显示用相机拍摄的用户个人头像(android)

时间:2017-07-18 14:07:16

标签: android firebase ionic-framework firebase-realtime-database camera

我想让用户用相机拍照并将其用作新的个人资料照片。要拍照,我使用这个功能:

capture(){
    this.camera.getPicture({
        quality: 100,
        destinationType: this.camera.DestinationType.DATA_URL,
        sourceType: this.camera.PictureSourceType.CAMERA,
        encodingType: this.camera.EncodingType.PNG,
        saveToPhotoAlbum: true
    }).then(imageData => {
        this.myPhoto = imageData;
        this.uploadPhoto();
    }, error => {
        console.log("ERROR -> " + JSON.stringify(error));
    });

    this.api.updateUserPhoto(this.myPhotoURL);
}

其中uploadPhoto()

private uploadPhoto(): void {
    this.myPhotosRef.child(this.generateUUID()).child('myPhoto.png')
    .putString(this.myPhoto, 'base64', { contentType: 'image/png' })
    .then((savedPicture) => {
        this.myPhotoURL = savedPicture.downloadURL;
    });
}

generateUUUID()

private generateUUID(): any {
    var d = new Date().getTime();
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx'.replace(/[xy]/g, function (c) {
        var r = (d + Math.random() * 16) % 16 | 0;
        d = Math.floor(d / 16);
        return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
    return uuid;
}

相机在手机上正确打开,图像保存在图库中,但用户的个人资料未随照片更新;要更新用户配置文件,我使用firebase文档中的功能,即:

updateUserPhoto(photo: any){
    var user =  firebase.auth().currentUser;
    user.updateProfile({
        displayName: user.displayName,
        photoURL: photo
    }).then(function() {
        // Update successful.
    }, function(error) {
        // An error happened.
    });
}

这是我在开始时发布的方法capture中调用的函数,我传递了photoUrl生成的函数。
在新用户注册到应用程序时,默认图片将作为个人资料图片上传,并在<ion-img>元素中正确显示;每当我尝试使用相机更改它时,拍照后,<ion-img>会显示空白内容。这让我觉得照片实际上已经更新,因此生成的网址一定存在问题。

0 个答案:

没有答案