2017-05-29 2 views
0

私はユーザーが画像をアップロードしてテキストフィールドにダイレクトリンクを表示するアプリケーションを作成しています。firebaseを使用してダウンロードリンクを生成する

画像はバケットにアップロードするコードです。ユーザーがアップロードボタンを押したときにトリガーされます。

@IBAction func upload(_ sender: Any) { 

    let imageContained = viewimage.image 

    let storage = Storage.storage() 
    var storageRef = storage.reference() 
    storageRef = storage.reference(forURL: "bucket link") 

    var data = NSData() 
    data = UIImageJPEGRepresentation(imageContained!, 0.8)! as NSData 
    let dateFormat = DateFormatter() 
    dateFormat.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    let imageName = dateFormat.string(from: NSDate() as Date) 
    let imagePath = "images/\(imageName).jpg" 

    let mountainsRef = storageRef.child(imagePath) 

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

    mountainsRef.putData(data as Data, metadata: metadata) 

私はどのようにしてユーザーのダイレクトリンクを生成しますか?機能以下

答えて

4

使用この完了ハンドラと

func uploadProfilePic(){ 
     var data = NSData() 
     data = UIImageJPEGRepresentation(ivProfile.image!, 0.8)! as NSData 
     // set upload path 
     let filePath = "\(userid)" // path where you wanted to store img in storage 
     let metaData = FIRStorageMetadata() 
     metaData.contentType = "image/jpg" 

     self.storageRef = FIRStorage.storage().reference() 
     self.storageRef.child(filePath).put(data as Data, metadata: metaData){(metaData,error) in 
      if let error = error { 
       print(error.localizedDescription) 
       return 
      }else{ 
       //store downloadURL 
       let downloadURL = metaData!.downloadURL()!.absoluteString 

      } 
     } 

    } 
+0

お役に立てば幸いです。どのように私は[downloadURL = getLink.text!]を試みたtextFieldにdownloadURLの値を表示することができます –

+0

@AhmedAlAbdulaalこのコードを使用する - > 'textField.text = downloadURL' –

+0

ありがとう、これは私のために働いた[self.getLink.text =ダウンロードURL: ] –

1

アップロード機能。

func uploadMedia(completion: @escaping (_ url: String?) -> Void) { 
    let storageRef = FIRStorage.storage().reference().child("myImage.png") 
    if let uploadData = UIImagePNGRepresentation(self.myImageView.image!) { 
     storageRef.put(uploadData, metadata: nil) { (metadata, error) in 
      if error != nil { 
       print("error") 
       completion(nil) 
      } else { 
       completion((metadata?.downloadURL()?.absoluteString)!)) 
       // your uploaded photo url. 
      } 
     } 
} 

は、それはそれは、おかげで働いた

関連する問題