Firebaseで画像をuploadする概要
ざっくりしか書いてありません、概要でも掴んでもらえたらと書きました
// 1:画像をデータに変換
guard let imageData = image.jpegData(compressionQuality: 0.3)
compressionQualityは0.0~1.0まで設定できます
// 2:ストレージイメージ参照を作成->保存するFirestorageの場所
let imageRef = Storage.storage().reference().child("/productImages\/(name).jpg")
productImagesは今回はfirebase上のstorageにフォルダを作成しています
後述のnameに関してはOutletのテキスト入力を想定しています
2箇所(productImages, name)は任意に変更可能です
// 3:メタデータを設定
let metaData = StorageMetaData()
metaData.contentType = "image/jpeg"
"image/jpeg"はstorage上のタイプを指定しています
// 4:データをアップロード
imageRef.putData(imageData, metadata: metaData) { (metaData, error) in
if let error = error {
self.handleError(error: error, msg: "Unable to upload image.")
return
}
// 5:画像がアップロードされたら、ダウンロードURLを取得
imageRef.downloadURL { (url, error) in
if let error = error {
self.handleError(error: error, msg: "Unable to download URL.")
return
}
guard let url = url else { return }
// 6:新しいドキュメントをFirestoreコレクションにアップロード
// uploadDocumentは関数を用意してあげる
// Firebaseへの登録時の構造体を初期化して、setDataメソッドでデータをセットしてあげる
self.uploadDocument(url: url.absoluteString)
}
}