swift - 下载firebase存储网址不起作用
问题描述
我有一张图片已上传到 Firebase 存储,但我无法将downloadURL
其保存在我的数据库中。
我已经阅读了很多关于 StackOverflow 的帖子,但对我来说没有任何效果。图像已加载到存储中,但错误提示它不存在。
let image = self.selectedImage
let imageData = UIImageJPEGRepresentation(image, 0.1)
let storageRef = Storage.storage().reference().child(uid)
storageRef.putData(imageData, metadata: nil) // i know that i can use a completion here but i left it for now
storageRef.downloadURL { url, error in
if let error = error {
print(error)
} else {
// do sth. else
}
}
这些是我得到的错误:
FIRStorageErrorDomain Code=-13010 "Object W002MjRvi0d8JfVwImUJhH0ph2O2 does not exist."UserInfo={object=W002MjRvi0d8JfVwImUJhH0ph2O2,
ResponseBody={
"error": {
"code": 404,
"message": "Not Found. Could not get object"
}
}
ResponseErrorDomain=com.google.HTTPStatus, ResponseErrorCode=404}
解决方案
请查看存储规则
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth!=null;
}
}
}
在您的视图控制器中
import Firebase
import FirebaseAuth
import ImageIO
var imgData: NSData = NSData(data: UIImageJPEGRepresentation((self.img_Photo?.image)!, 0.5)!)
self.uploadProfileImageToFirebase(data: imgData)
func uploadProfileImageToFirebase(data:NSData){
guard let userID = Auth.auth().currentUser?.uid else {
return
}
let storageRef = Storage.storage().reference().child(“Images”).child(userID)
if data != nil {
storageRef.putData(data as Data, metadata: nil, completion: { (metadata, error) in
if(error != nil){
print(error)
return
}
// Fetch the download URL
storageRef.downloadURL { url, error in
if let error = error {
// Handle any errors
if(error != nil){
print(error)
return
}
} else {
// Get the download URL for 'images/stars.jpg'
let urlStr:String = (url?.absoluteString) ?? ""
}
}
})
}
}
推荐阅读
- java - 在服务器没有收到客户端的响应之前,每 5 秒重新启动一次服务器
- mongodb - 部分更新删除了 mongodb 中的所有其他字段
- woocommerce - DoCapture API 返回 ACK => Success 但 PAYMENTSTATUS => Pending 和 PENDINGREASON 是 paymentreview
- c# - 如何让用户响应命令 C# discord bot
- c++ - 为什么语句中的链接方法无法给出预期的结果?
- c++ - 无法将 bitblt() 移到透明窗口 c++/winapi 的中心
- python - 我想知道每个帖子的 ManyToMany 字段是否包含 django 中的用户 ID
- jquery - 选择器包含在标签中时无法选择“下一个”
- javascript - 在 TypeScript 中键入对象数组
- c# - 编译时抛出“由于 StackOverflowException 而终止进程”