Firebase에 이미지 데이터 추가하기
작성일
Firebase에 이미지 데이터 추가하기
예시 코드
이미지를 jpeg로 압축한다.
guard let imageData = profileImage.jpegData(compressionQuality: 0.3) else { return }
파일이름을 uuid로 만들어주기
let filename = NSUUID().uuidString
경로를 지정해준다.
let storageRef = STORAGE_PROFILE_IMAGES.child(filename)
여기서 STORAGE_PROFILE_IMAGES란?
Storage.storage().reference().child("profile_images")
이다. 저장할 경로 Storage.storage().reference()에 profile_images란 폴더를 추가해준다.
다시 돌아가서 경로를 지준해준다음, .putData 를 이용해서 압축한 이미지를 넣고,
storageRef.putData(imageData, metadata: nil)
.downloadURL 를 이용해서 이미지 url주소를 가져올 수 있다.
전체코드(데이터추가에서 사용한 코드가 같이 적혀있을 수 있다.)
guard let profileImage = profileImage else {
print("DEBUG: Please select a profile image..")
return
}
guard let email = emailTextField.text else { return }
guard let password = passwordTextField.text else { return }
guard let fullname = fullnameTextField.text else { return }
guard let username = usernameTextField.text else { return }
// 이미지를 jpeg로 압축하기
guard let imageData = profileImage.jpegData(compressionQuality: 0.3) else { return }
// 파일이름을 uuid로 만들어주기
let filename = NSUUID().uuidString
let storageRef = STORAGE_PROFILE_IMAGES.child(filename)
storageRef.putData(imageData, metadata: nil) { meta, error in
storageRef.downloadURL { url, error in
guard let profileImageUrl = url?.absoluteString else { return }
// 파이어베이스에 회원가입
Auth.auth().createUser(withEmail: email, password: password) { result, error in
if let error = error {
print("DEBUG: Error is \(error.localizedDescription)")
return
}
// 사용자의 User UID
guard let uid = result?.user.uid else { return }
// 저장할 값을 딕셔너리형태로 만들어준다.
let values = ["email": email,
"username": username,
"fullname": fullname,
"profileImageUrl": profileImageUrl]
// REF_USERS란? 저장할 경로 Database.database().reference()까진 같고,
// 그뒤 "user"란 키를 추가할건데 그걸 .child(uid)에 추가할 것이다. -> REF_USERS.child(uid)로 변경
// 추가하는 메서드 .updateChildValues이고, values을 넣어준다.
REF_USERS.child(uid).updateChildValues(values) { error, ref in
print("DEBUG: Seuccessfully updated user information..")
}
}
}
}
데이터베이스에 처럼 폴더가 추가된 모습과 처럼 사진 데이터가 추가된 모습을 볼 수있다.