Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

296
Views
downloadURL de Firebase Storage es nulo después de cargar correctamente un archivo

Soy nuevo en firebase y tengo un problema aquí.

Ya he subido con éxito mi imagen al almacenamiento de Firebase, sin embargo, necesito obtener la URL de descarga de inmediato y publicarla en la base de datos. Y no estoy seguro de por qué no funciona dentro de ese cierre.

El siguiente es mi código:-

 func CreateNewChatRoom(user: User, caption: String, data: Data){ let filePath = "\(user.uid)/\(Int(NSDate.timeIntervalSinceReferenceDate)).jpg" let metaData = StorageMetadata() metaData.contentType = "image/jpg" let reference = storageRef.child(filePath) reference.putData(data, metadata: metaData) { (metadata, error) in if let error = error { print("\(error.localizedDescription)") return } reference.downloadURL(completion: { (url, error) in if let error = error{ print("Error : \(error.localizedDescription)") return } else{ if let downloadURL = url?.absoluteString { let idRoom = self.BASE_REF.child("rooms").childByAutoId() idRoom.setValue(["caption":caption, "thumbnailUrlFromStorage": self.storageRef.child(metadata!.path!).description,"fileUrl": downloadURL]) } } }) } }
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Tengo el mismo problema, y encontré la siguiente solución, espero que le sea útil a alguien. rápido 5

importar FirebaseAuth importar FirebaseStorage importar FirebaseFirestore

typealias AddStoryResult = (Bool, ¿Error?) -> Void typealias UploadImageResult = (StorageMetadata?, ¿Error?) -> Void

clase StoryFirebaseAPI {

 static let storage = Storage.storage() static var downloadUrlString: URL? var image: UIImage? let photoUri = "smth uri path" uploadImage(image, photoUriString: photoUri) { (metadata: StorageMetadata?, error: Error?) in guard let metadata = metadata else { if let error = error { print("Error occured: \(error)") } completion(false, error) return } // and at this point I have print(downloadUrlString) completion(true, nil) }

}

extensión StoryFirebaseAPI {

 func uploadImage(_ image: UIImage, photoUriString: String, completion: @escaping UploadImageResult) { guard let imageData = image.jpegData(compressionQuality: 0.5) else { print("smth error") completion(nil, nil) return } let storageRef = storage.reference().child(photoUriString) let imageMetadata = StorageMetadata() imageMetadata.contentType = "image/jpeg" storageRef.putData(imageData, metadata: imageMetadata) { (storageMetadata, error) in if let error = error { print("Error: \(error.localizedDescription)") completion(nil, error) return } guard let unwrappedMetadata = storageMetadata else { print("smth error") print("Error: \(error?.localizedDescription ?? "")") completion(nil, error) return } storageRef.downloadURL { url, error in if let error = error { print("Error: \(error.localizedDescription)") completion(nil, error) return } else { if let url = url { downloadUrlString = url completion(unwrappedMetadata, nil) } } } print("Image uploaded successfully") } }

}

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!