2017-04-16 25 views
0

Firebaseアップロード画像

let storageRef = FIRStorage.storage().reference() 
let imageRef = storageRef.child("AAA").child("BBB").child("CCC.jpeg") 
let metaData = FIRStorageMetadata() 
metaData.contentType = "image/jpeg" 
if let uploadData = UIImageJPEGRepresentation(sampleImage, 0.5){ 
      imageRef.put(uploadData, metadata: metaData, completion: { (metaData, error) in 
       print("finished") 
       if error != nil{ 
        print(error!.localizedDescription) 
       }else{ 
        print("success") 
       } 
      }) 
     }else{ 
      print("Cannot convert image to JPEG format") 
     } 

問題は、上記のコードは何もしないということですが、他の言葉で、何も出力しません。 Firebaseデータベースに文字列をアップロードしようとしましたが、成功しました。 Firebaseストレージのルールも確認しました:

service firebase.storage { 
    match /b/{bucket}/o { 
    match /{allPaths=**} { 
     allow read: if true; 
     allow write: if request.auth != null; 
    } 
    } 
} 

私は間違っていましたか?私がセットアップする必要があるものはありますか?助けてください!!

答えて

0

免責事項:私のミドルネームはSwiftLintではないと言っておきましょう。

これを試して、データベースのルールも同様であることを確認してください。あなたは、あなたのデータベース内のストレージにあるイメージへのリンクを得るべきです。

if let theData = UIImageJPEGRepresentation(sampleImage, 0.5) { 
    self.helper(photoData:theData) 
} 
// ^^ this can happen elsewhere ^^ 

func upload(photoData:Data) { 
    let imgName = Int(round(Date().timeIntervalSince1970) 

    let metadata = FIRStorageMetadata() 
    metadata.contentType = "image/jpeg" 

    let imageRef = FIRStorage.storage().reference().child("AAA/BBB/\(imgName).jpg") 

    imageRef.put(photoData, metadata: metadata) { (metadata, error) in 
     if let error = error { 
      print("Error uploading: \(error)") 
      return 
     } 

     let data:[String:Any] = [ 
      "timeStamp":"\(Date())", 
      "image":metadata!.downloadURL()!.absoluteString 
     ] 

     let dbRef = FIRDatabase.database().reference() 
     dbRef.child("imageUploads").childByAutoId().setValue(data) 

    }  
} 
+0

データ:[文字列:すべて] = [ "タイムスタンプ": "\(日付)"、 "画像":メタデータを次の部分を試しても機能しませんでした。 .dataRef.child( "imageUploads")。childByAutoId()。setValue(data)しかし、私はストレージをチェックしましたが、何もしませんでした。そこにある。 – AlexBains

0

まあ、私の元の溶液と@MGTLAソリューションの両方が正しい、問題は、画像をアップロードした後、whileループであることが判明した...このトピックには無関係です。

関連する問題