Tham gia ngay khoá học lập trình iOS, hình thức học tập rất linh hoạt cho bạn lựa chọn và sẽ có mức học phí khác nhau tuỳ theo bạn chọn học Online, Offline hoặc FlipLearning(Kết hợp giữa Online và Offline). Ngoài ra bạn có thể tham gia thực tập toàn thời gian tại Techmaster để rút ngắn thời gian học và tăng cơ hội việc làm.

Trong bài này tôi sẽ hướng dẫn cách bạn cách để lưu ảnh lên Database của bạn ở FireBase bằng cách chuyển nó về Base64Strings.

Như các bạn đã biết các  kiểu dữ liệu Firebase hỗ trợ để lưu không có kiểu ảnh, nhưng chúng ta vẫn có thể làm việc đó bằng cách chuyển ảnh sang kiểu Base64 strings…

Lưu ảnh lên FireBase

- Ảnh tôi lưu ở local hoặc các bạn có thể lấy online cũng được

Học lập trình iOS cơ bản đến nâng cao

- Đầu tiên chúng ta sẽ phải khai báo đường dẫn đến Database như ở các bài trước:

let ref = Firebase(url:"https://testfirebase-tu.firebaseio.com")

- Tiếp theo tôi sẽ lấy ảnh 

var uploadImage = UIImage(named: "1460642784_Snowman.png")

- Ở dưới đây tôi chuyển ảnh sang kiểu dữ liệu NSData rồi sau đó encode về định dạng base64Strings:

var imageData: NSData = UIImagePNGRepresentation(uploadImage!)!
let base64String = imageData.base64EncodedStringWithOptions([])                                ref.childByAppendingPath("images").setValue(["string": base64String])

- Các bạn có thể thấy dữ liệu của chúng ta đã được lưu trên FireBase là kiểu string:

Học lập trình iOS qua ứng dụng thực tế

Nhận ảnh từ FireBase

Để nhận được ảnh từ Firebase bạn phải khai báo một observe, ở dưới đây tôi sẽ sử dụng sự kiện ChildAdded để lấy ra các dữ liệu của nhánh con:

ref.observeEventType(.ChildAdded, withBlock: { snapshot in

//Ở đây với Database có thể có nhiều nhánh con nên tôi kiểm tra xem nhánh con đó có key nào là string( đây là key chứa dữ liệu ảnh)
if let value = snapshot.value["string"] as? String
{
//sau khi chắc chắn có dữ liệu tôi lại kiểm trả nếu mà decode thành công thì tôi sẽ lấy được ảnh
   if let base64Decoded = NSData(base64EncodedString: value, options:   NSDataBase64DecodingOptions(rawValue: 0))
   {
//sau khi lấy được ảnh tôi sẽ hiển thị ảnh lên view
       let imgView = UIImageView(frame: CGRectMake(100, 100, 40, 40))
       imgView.image = UIImage(data: base64Decoded)
       self.view.addSubview(imgView)
   }
}
                            
        
                            
}, withCancelBlock: { error in
     print(error.description)
        
})

Ảnh được hiển thị lên View:

Học lập trình iOS kiếm việc làm

Chú ý: Firebase giới hạn bạn chỉ có thể lưu ảnh dưới 10MB.