Я считаю, что вопрос заключается в том, как загрузить изображение в два разных места. Непонятно, почему существует функция наблюдения, поэтому этот ответ игнорирует ее, поскольку она может и не понадобиться.
Начиная с вашего кода, ваша функция сохранения будет выглядеть так
func save() {
self.uploadImageTask(imageName: "my_image.png", toLocation: "jobImage")
self.uploadImageTask(imageName: "my_image.png", toLocation: "anotherLocation")
}
, а затем функция загрузки
func uploadImageTask(imageName: String, toLocation: String) {
let theImage = UIImage(named: imageName) //set up your image here
let data = UIImagePNGRepresentation(theImage)! //we're doing a PNG
let storage = Storage.storage()
let storageRef = storage.reference()
let locationRef = storageRef.child("images").child(toLocation)
let imageLocationRef = locationRef.child(imageName)
// Upload the file to the path "images/location/imageName"
let uploadTask = locationRef.putData(data, metadata: nil) { (metadata, error) in
guard let metadata = metadata else {
print("error while uploading")
return
}
let size = metadata.size // Metadata contains file metadata such as size, content-type.
print(size)
locationRef.downloadURL { (url, error) in
guard let downloadURL = url else {
print("an error occured after uploading and then downloading")
return
}
let x = downloadURL.absoluteString
print(x) //or build a dict and save to Firebase
}
}
}
результат - изображение, сохраненное в
/images/jobImage/my_image.png
/images/anotherLocation/my_image.png
и он также напечатает путь к каждому изображению, которое может быть сохранено в Firebase.