gpt4 book ai didi

ios - Firebase 快速上传多张图片

转载 作者:行者123 更新时间:2023-11-28 07:57:19 26 4
gpt4 key购买 nike

当用户按下按钮时,我想在 firebase 中上传带有一些文本的多张图片。为此,我实现了 for 循环。假设如果用户选择了 3 张照片,那么我认为 firebase 应该是这样的

 "Post": {
"uid": {
"Text": "some text",
"imageUrl": "url",
"imageUrl2": "url2",
"imageUrl3": "url3"
}
}

但是它返回是这样的。 tweetImageUrl 是最后选择的第三张照片的 url。同样在存储中,只有一张照片,也是第三张照片。 image here

如何正确上传图片?这是我的代码。

    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

此外,当涉及到检索这些图像并在上传后显示在 Collection View 中时,这是实现该目标的正确方法吗?提前致谢!

最佳答案

我认为这不是您在使用 firebase 时应遵循的正确数据库结构。如果您像这样存储图像,比如 imageurl1、imageurl2...等。在不知道这些值的 key 的情况下获取这些值真的很困难。我建议你遵循这样的结构

"Post": {
"uid": {
"Text": "some text",
"images": {
autoID1: url1,
autoID2: url2
}
}
}

所以很容易获取这些 URL

您可以使用

附加 URL
let postRef = Database.database().reference(withPath: "Post").child(uid).child("images")
let autoID = postRef.childByAutoID().key
postRef.child(autoID).setValue(url)

关于ios - Firebase 快速上传多张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47690247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com