Ich möchte mehrere Bilder mit etwas Text in Firebase hochladen, wenn der Benutzer die Taste drückte. Um dies zu tun, implementierte ich for-Schleife. Nehmen wir an, wenn der Benutzer 3 Fotos ausgewählt hat, dann sollte Firebase so aussehen.Firebase mehrere Bilder in Swift hochladen
"Post": {
"uid": {
"Text": "some text",
"imageUrl": "url",
"imageUrl2": "url2",
"imageUrl3": "url3"
}
}
Aber es kommt so zurück. That tweetImageUrl ist die URL des dritten Fotos, die zuletzt ausgewählt wurde. auch im Speicher gibt es nur ein Foto, das auch das dritte Foto ist.
Wie kann ich Bilder korrekt hochladen? Hier ist mein Code.
func sendTweets() {
let text = textView.text
let tweetLength = textView.text.count
let imagesNumber = imagesArray.count
format.dateFormat = "yyyy-MM-dd HH:mm"
let strDate = format.string(from: date as Date)
let childRef = ref.child("TWEETS").child(uid!).childByAutoId()
let key = ref.child("TWEETS").child(uid!).childByAutoId().key
let childStorageRef = storageRef.child("tweetImage").child(uid!).child(key)
if(tweetLength>0 && imagesNumber>0)
{
for image in imagesArray {
let tweetImage = image
if let uploadData = UIImagePNGRepresentation(tweetImage) {
childStorageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in
if error != nil {
print("error")
} else {
if let imageUrl = metadata?.downloadURL()?.absoluteString {
let values = ["Text": text!, "tweetImageUrl": imageUrl, "Date": strDate] as [String : Any]
childRef.updateChildValues(values)
}
}
})
}
}
dismiss(animated: true, completion: nil)
}
else if(tweetLength>0)
{
let values = ["Text": text!, "Date": strDate] as [String : Any]
childRef.updateChildValues(values)
dismiss(animated: true, completion: nil)
}
else if(imagesNumber>0)
{
for image in imagesArray {
let tweetImage = image
if let uploadData = UIImagePNGRepresentation(tweetImage) {
childStorageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in
if error != nil {
print("error")
} else {
if let imageUrl = metadata?.downloadURL()?.absoluteString {
let values = ["tweetImageUrl": imageUrl, "Date": strDate] as [String : Any]
childRef.updateChildValues(values)
}
}
})
}
}
dismiss(animated: true, completion: nil)
} else {
alertTheUser(title: "error", message: "enter something.")
}
}//func
Auch wenn es darum geht, diese Bilder und die Anzeige auf der Sammlung Ansicht nach hochgeladen abzurufen, dann ist dies die richtige Art und Weise, dies zu erreichen? Vielen Dank im Voraus!
Vielen Dank Rozario !! Das ist so hilfreich. Funktioniert das auch für die Speicherung? – Daibaku