準確地說,我正在使用 iOS (swiftUI)。我正在將影像上傳到firebase-storage,在每張影像上傳后我都檢索了一個downloadURL,但是我一直堅持讓我的urlStr(獲取的downloadURL)回傳。非常感謝您的幫助。
上傳然后檢索 downloadURL 的代碼段:
if let data = data {
mainRef.putData(data, metadata: metadata) { (metadata, error) in
if let error = error {
print("Error while uploading file: ", error)
}
if let metadata = metadata {
let pathRef = self.storage.reference(withPath: "\(dir)/\(metadata.name ?? "Image not found")")
pathRef.downloadURL { url, error in
if let error = error {
print(error.localizedDescription)
return
} else {
// Get the download URL
let urlStr:String = (url?.absoluteString) ?? ""
print(urlStr) // <--------- Pass back to newSite function.
}
}
}
}
}
return(urlReturn)
對上述內容的初始呼叫:
currentSite.imageMain = storageManager.upload(image: image, siteRef: newSiteRef.documentID, size: 1000, dir: "ImagesMain/")
uj5u.com熱心網友回復:
您可以使用處理程式嘗試類似這種方法completion:
func upload(image: ....., completion: @escaping (String) -> Void) ) { // <-- here
// .....
if let data = data {
mainRef.putData(data, metadata: metadata) { (metadata, error) in
if let error = error {
print("Error while uploading file: ", error)
}
if let metadata = metadata {
let pathRef = self.storage.reference(withPath: "\(dir)/\(metadata.name ?? "Image not found")")
pathRef.downloadURL { url, error in
if let error = error {
print(error.localizedDescription)
completion("") // <-- here todo deal with errors
return
} else {
// Get the download URL
let urlStr: String = (url?.absoluteString) ?? ""
print(urlStr)
completion(urlStr) // <-- here pass back urlStr
}
}
}
}
}
return(urlReturn)
}
像這樣使用它:
currentSite.imageMain = storageManager.upload(image: image, siteRef: newSiteRef.documentID,
size: 1000, dir: "ImagesMain/") { urlString in // <-- here
print("---> urlString: \(urlString)" ) // <-- here
}
由于您沒有顯示完整的作業示例代碼,因此您必須根據需要調整方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496749.html
標籤:迅速 firebase-存储
