UIImagePickerControllerで選択した画像をUIImageViewに表示させ、表示させた画像をボタンを押すとFirebase Strageにアップロードする機能をつけたいと考えています。
UIImageViewに表示させるところまでは動作したのですが、アップロードを行おうとするとprintに書いたエラーメッセージが出てアップロードできていませんでした。
コードの問題点がお分かりになる方がいらっしゃいましたら、教えていただけますか。
こちらのページを参考に進めていきました。
Swift
1import UIKit 2import Firebase 3import FirebaseUI 4 5class ViewController: UIViewController, UIImagePickerControllerDelegate,UINavigationControllerDelegate { 6 7 let imagePick = UIImagePickerController() 8 9 @IBOutlet weak var image: UIImageView! 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 imagePick.delegate = self 15 16 } 17 18 19 @IBAction func changeImage(_ sender: Any) { 20 imagePick.sourceType = .photoLibrary 21 present(imagePick, animated: true, completion: nil) 22 } 23 24 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 25 if let pickedImage = info[.originalImage] as? UIImage { 26 image.contentMode = .scaleAspectFit 27 image.image = pickedImage 28 } 29 dismiss(animated: true, completion: nil) 30 } 31 32 func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 33 dismiss(animated: true, completion: nil) 34 print("キャンセルされました") 35 } 36 37 38 39 @IBAction func uploadImage(_ sender: Any) { 40 upload() 41 } 42 43 fileprivate func upload() { 44 let date = NSDate() 45 let currentTimeStampInSecond = UInt64(floor(date.timeIntervalSince1970 * 1000)) 46 let storageRef = Storage.storage().reference(forURL: "gs://<sample>.com").child("images").child("(currentTimeStampInSecond).jpg") 47 let metaData = StorageMetadata() 48 metaData.contentType = "image/jpg" 49 if let uploadData = self.image.image?.jpegData(compressionQuality: 0.9) { 50 storageRef.putData(uploadData, metadata: metaData) { (metadata , error) in 51 if error != nil { 52 print("error: (error!.localizedDescription)") 53 } 54 storageRef.downloadURL(completion: { (url, error) in 55 if error != nil { 56 print("error: (error!.localizedDescription)") 57 } 58 print("url: (url?.absoluteString)") 59 }) 60 } 61 } 62 } 63 64} 65
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。