如何观察 Firebase 存储上传事件
How to observe Firebase Storage Upload event
我有一个 iOS 应用程序可以将照片上传到 Firebase 存储,还有一个网络应用程序连接到同一个 Firebase。有没有办法从网络上观察存储的变化?上传照片时,只有 iOS 设备本身可以访问 UploadTask,而且我没有在 the docs 中看到存储的 on
事件观察器,就像数据库一样。
Firebase 存储不提供与实时数据库相同的 "sync" 功能(想象一下尝试同步 1GB 对象会是什么样子...)。您需要使用数据库来同步文件上传的元数据(例如下载 URL 等),如下所示:
// Upload file to Firebase Storage
storageRef.putData(imageData).observeStatus(.Success) { (snapshot) in
// When the image has successfully uploaded, get it's download URL
let url = snapshot.metadata?.downloadURL()?.absoluteString
// Write data to the realtime database
dbRef.child("photos").childByAutoId().setValue(["name": snapshot.metadata?.name, "url": url])
}
...
dbRef.child("photos").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
// snapshot contains the name and URL of the uploaded file
});
Code is from Zero to App,我们在 I/O 2016 年进行的一次演讲,详细介绍了这一点
我有一个 iOS 应用程序可以将照片上传到 Firebase 存储,还有一个网络应用程序连接到同一个 Firebase。有没有办法从网络上观察存储的变化?上传照片时,只有 iOS 设备本身可以访问 UploadTask,而且我没有在 the docs 中看到存储的 on
事件观察器,就像数据库一样。
Firebase 存储不提供与实时数据库相同的 "sync" 功能(想象一下尝试同步 1GB 对象会是什么样子...)。您需要使用数据库来同步文件上传的元数据(例如下载 URL 等),如下所示:
// Upload file to Firebase Storage
storageRef.putData(imageData).observeStatus(.Success) { (snapshot) in
// When the image has successfully uploaded, get it's download URL
let url = snapshot.metadata?.downloadURL()?.absoluteString
// Write data to the realtime database
dbRef.child("photos").childByAutoId().setValue(["name": snapshot.metadata?.name, "url": url])
}
...
dbRef.child("photos").observeEventType(.ChildAdded, withBlock: { (snapshot) -> Void in
// snapshot contains the name and URL of the uploaded file
});
Code is from Zero to App,我们在 I/O 2016 年进行的一次演讲,详细介绍了这一点