Firebase Storage позволяет загружать файлы, поэтому вам не нужно загружать длинные base64
строки. Почему вы все еще хотите загрузить base64
?
Я не знаком с тем, что возвращает метод this.camera.getPicture
, но уверен, что это тип File
. В этом случае:
}).then(imageData => {
this.uploadToFireStore(imageData)
И
uploadToFireStore(imageData){
let storageRef = this.storage.ref('/');
let imageRef = storageRef.child('myimage')
const task = imageRef.upload(imageData, 'data_url')
this.uploadPercent = task.percentageChanges();
task.snapshotChanges().pipe(
finalize( async () => {
await this.downloadURL = imageRef.getDownloadURL().toPromise();
console.log('this.downloadURL', this.downloadURL)
}
)
)
.subscribe()
Обратите внимание, что finalize
принимает async
функцию, потому что imageRef.getDownloadURL()
возвращает Observable, так как нам нужно только одно значение из него, и это единственное значение, которое нам нужно для этого потока, он выглядит чище для его преобразования Обещать.