Usecase:
Пользователь выбирает несколько снимков с камеры и добавляет их в свой пост. Они вводят описание и заголовок, а затем выбирают для публикации. Их сообщение появляется в их профиле пользователя с прикрепленными выбранными ими изображениями.
Проблема:
Я создаю имиджевое приложение для блога с Ionic 4, AngularFire2. Моя цель - загрузить изображения пользователей в хранилище Firebase и загрузить каждый URL-адрес изображения для ссылки в базе данных Firestore.
Я могу загрузить несколько изображений в хранилище Firebase, однако я хочу загрузить каждое из них. URL изображения. Пока я могу загрузить только один URL-адрес изображения. Я новичок в Ionic / AngularFire, и я не знаю, что зациклить или где я должен зацикливаться, чтобы получить URL изображения в массиве.
Машинопись:
async uploadImageToFirebase(image){
let image_src = this.webview.convertFileSrc(image);
let randomId = Math.random().toString(36).substr(2, 5);
//uploads img to firebase storage
this.firebaseService.uploadImage(image_src, randomId)
.then(photoURL => {
this.image = [ photoURL ]
loading.dismiss();
toast.present();
}, err => {
console.log(err);
})
Служба:
encodeImageUri(imageUri, callback) {
var c = document.createElement('canvas');
var ctx = c.getContext("2d");
var img = new Image();
img.onload = function () {
var aux:any = this;
c.width = aux.width;
c.height = aux.height;
ctx.drawImage(img, 0, 0);
var dataURL = c.toDataURL("image/jpeg");
callback(dataURL);
};
img.src = imageUri;
};
uploadImage(imageURI, randomId){
return new Promise<any>((resolve, reject) => {
let storageRef = firebase.storage().ref();
let imageRef =
storageRef.child('image').child(randomId);
this.encodeImageUri(imageURI, function(image64){
imageRef.putString(image64, 'data_url')
.then(snapshot => {
snapshot.ref.getDownloadURL()
.then(res => resolve(res))
}, err => {
reject(err);
})
})
})
}
Моя база данных пожарного депо в настоящее время выглядит следующим образом
posts : {
Title : this is a title,
Description: this is a description,
image:
[ 0 ] "https://firebasestorage.googleapis.com/v0/b/imagepost-1962c.appspot.com/o/image%2Fbak95?alt=media&token=58eb6037-4253-4dcc-b35b-8d58ddsdffss"
}
Но я хочу, чтобы она выгляделакак
posts : {
Title : this is a title,
Description: this is a description,
image:
[ 0 ] "https://firebasestorage.googleapis.com/v0/b/imagepost-1962c.appspot.com/o/image%2Fbak95?alt=media&token=58eb6037-4253-4dcc-b35b-8d58ddsdffss"
[ 1 ] "another image url"
[ 2 ] "another image url"
}