質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

536閲覧

Firebase Storageに画像をアップロードしたい

yotubarail

総合スコア23

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

2クリップ

投稿2020/01/16 04:36

編集2020/01/16 05:08

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

セキュリティのルールの問題でした。
Databaseの方のルールを

service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write; } } }

にしていいたため、Storageも同様に変更したものと思い込んでいました。

投稿2020/01/17 00:24

yotubarail

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問