2017-05-29 155 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

它的工作,谢谢。如何在textField上显示downloadURL的值我试过[downloadURL = getLink.text!] –

+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. 
      } 
     } 
} 

希望它可以帮助