Advertisement
Guest User

Untitled

a guest
Jul 24th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. import UIKit
  2. import FirebaseStorage
  3.  
  4. class UploadDataViewController: UIViewController {
  5. let imageName = "/profile.jpg"
  6. var imageFileURL: URL?
  7. var storageRef: StorageReference! = nil
  8. typealias CompletionHandler = (_ success: Bool,_ metadata: StorageMetadata?,_ downloadUrl: URL?) -> Void
  9.  
  10. override func viewDidLoad() {
  11. super.viewDidLoad()
  12. self.storageRef = Storage.storage().reference()
  13. self.saveUserProfile()
  14. }
  15.  
  16. func saveUserProfile() {
  17. let image = UIImage(named: "profile")
  18. if createImgUrl(image: image!) {
  19. self.uploadImageWithUrl(fileUrl: self.imageFileURL!, fileName: "userID1") { (success, metadata, downloadUrl) in
  20. if success {
  21. // Can save this download url into your database for further use/download
  22. print("Image uploaded successfully and downloading url is \(downloadUrl)")
  23. } else {
  24. print("Error while uploading image")
  25. }
  26. }
  27. } else {
  28. print("Error while creating document url for this image")
  29. }
  30. }
  31.  
  32. // save your image to document directory
  33. func createImgUrl(image:UIImage) -> Bool {
  34. let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
  35. self.imageFileURL = documentsDirectory.appendingPathComponent(self.imageName)
  36. if let data = UIImageJPEGRepresentation(image, 0.5) {
  37. do {
  38. try data.write(to: self.imageFileURL!)
  39. return true
  40. } catch {
  41. print("error saving file:", error)
  42. }
  43. }
  44. return false
  45. }
  46.  
  47. // Upload an image file to Firebase - (Google cloud storage bucket)
  48. func uploadImageWithUrl(fileUrl:URL, fileName:String, completionHandler: @escaping CompletionHandler) {
  49. let imagesRef = storageRef.child("user_profile")
  50. let fileRef = imagesRef.child(fileName).child(self.imageName)
  51. let imgMetadata = StorageMetadata()
  52. imgMetadata.contentType = "image/jpeg"
  53. let uploadTask = fileRef.putFile(from: fileUrl, metadata: imgMetadata) { metadata, error in
  54. guard let metadata = metadata else {
  55. return completionHandler(false, nil, nil)
  56. }
  57. fileRef.downloadURL { (url, error) in
  58. guard let downloadURL = url else {
  59. return completionHandler(false, nil, nil)
  60. }
  61. print("Downloaded Url for uploaded image is: \(downloadURL)")
  62. completionHandler(true, metadata, downloadURL)
  63. }
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement