Swift firebase中的多图像上载
上载图像文件url时,仅上载最后一个Swift firebase中的多图像上载,swift,firebase,Swift,Firebase,上载图像文件url时,仅上载最后一个 if 0 < imageData.count { var imagesCount:Int = 0 var fileNumbers:Int = 0 var temp:Int = 0 for data in imageData { fileNumbers += 1 let uploadTask =
if 0 < imageData.count {
var imagesCount:Int = 0
var fileNumbers:Int = 0
var temp:Int = 0
for data in imageData {
fileNumbers += 1
let uploadTask = storageRef.child("\(fileNumbers).jpg").putData(data)
uploadTask.observe(.success) { snapshot in
imagesCount += 1
storageRef.child("\(fileNumbers).jpg").downloadURL(completion: { url, error in
if error != nil {
print("error: \(error!)")
} else {
let downloadURL = url?.absoluteString
DatabaseReference.child("User").child(self.userID!).child("Puppy").child("Walk").child("WalkData").child("\(self.walkCache["dataInt"]!)").child("images").updateChildValues(["imageURL\(fileNumbers)":downloadURL!])
print("=============================")
print(fileNumbers)
print(downloadURL!)
print("=============================")
}
})
if self.imageData.count == imagesCount {
self.indicatorView.stopAnimating()
self.subIndicatoreView.stopAnimating()
FileManager.shared.clearTmpDirectory()
//self.view.removeFromSuperview()
}
}
}
}
如果0
我的控制台
=============================
二,
萨缪尔
=============================
二,
sameurl我写了一个函数来上传Firebase存储中的图像,请使用这个函数,你也可以多次调用它来并行上传多张图片。你也可以看看这篇文章或者它的android版本
我写了一个函数来上传Firebase存储中的一张图片,请使用这个函数,你也可以多次调用它来并行上传多张图片。你也可以看看这篇文章或者它的android版本 问题是
.putData(data)
,因为您省略了闭包。url仅在该语句后面的闭包中有效。通过查看Firebase示例,您可以非常轻松地修复代码。确保在放置数据之后添加闭包,并将处理url的代码移动到该闭包中,如示例所示。问题是.putData(data)
,因为您忽略了闭包。url仅在该语句后面的闭包中有效。通过查看Firebase示例,您可以非常轻松地修复代码。确保在放置数据之后添加闭包,并将处理url的代码移动到该闭包中,如示例所示。
public func uploadData(data: Data, serverFileName: String) {
let storage = Storage.storage()
let storageRef = storage.reference()
// Create a reference to the file you want to upload
var directory = "images/"
let fileRef = storageRef.child(directory + serverFileName);
// Upload the file to the path "images/rivers.jpg"
let uploadTask = fileRef.putData(data, metadata: nil) { metadata, error in
/* guard let metadata = metadata else {
// Uh-oh, an error occurred!
print("Uh-oh, an error occurred! in metadata retreiving")
return
} */
// Metadata contains file metadata such as size, content-type.
// let size = metadata.size
// You can also access to download URL after upload.
fileRef.downloadURL { (url, error) in
guard let downloadURL = url else {
// Uh-oh, an error occurred!
return
}
// File Uploaded Successfully
// file url is here downloadURL.absoluteString
}
}
}