【发布时间】:2019-01-07 15:12:28
【问题描述】:
我尝试在一个存储位置同时保存两张不同的图像
这是我保存信息的功能
var text: String = ""
var addedByUser: String?
var userImage: UIImage?
var jobImage: UIImage!
var downloadURL: String?
var userDownloadURL: String?
let ref: DatabaseReference!
init(text: String? = nil, jobImage: UIImage? = nil, addedByUser: String? = nil, userImage: UIImage? = nil) {
self.text = text!
self.jobImage = jobImage
self.addedByUser = addedByUser
self.userImage = userImage
ref = Database.database().reference().child("jobs").childByAutoId()
}
init(snapshot: DataSnapshot){
ref = snapshot.ref
if let value = snapshot.value as? [String : Any] {
text = value["text"] as! String
addedByUser = value["addedByUser"] as? String
downloadURL = value["imageDownloadURL"] as? String
userDownloadURL = value["imageUserDownloadURL"] as? String
}
}
func save() {
let newPostKey = ref.key
// save jobImage
if let imageData = jobImage.jpegData(compressionQuality: 0.5) {
let storage = Storage.storage().reference().child("jobImages/\(newPostKey)")
storage.putData(imageData).observe(.success, handler: { (snapshot) in
self.downloadURL = snapshot.metadata?.downloadURL()?.absoluteString
let postDictionary = [
"imageDownloadURL" : self.downloadURL!,
"imageUserDownloadURL" : self.userDownloadURL!,
"text" : self.text,
"addedByUser" : self.addedByUser!
] as [String : Any]
self.ref.setValue(postDictionary)
})
}
}
我尝试了以下代码
if let imageData = jobImage.jpegData(compressionQuality: 0.5), ((userImage?.jpegData(compressionQuality: 0.5)) != nil) {
但它不起作用,因为数据库中没有保存任何东西......
你有什么想法我可以解决它吗?
【问题讨论】:
-
您问题中的代码似乎与同时保存两个图像无关。此外,您正在添加一个观察者,它通常会返回一个上传句柄,以便您可以确定其进度、暂停它等。看起来您根本没有使用它。那么,只按照Firebase Guide 中的示例代码上传文件怎么样?你能澄清一下“两个不同的图像”是什么意思吗?
-
我已经完成了所有这些,但我认为我不应该发布所有代码,因为对我来说只有这些行似乎很重要,但正如你所想,我上传了其他代码 sn-p .
-
另外,我怎样才能在数据中再放一张图片?
-
是的 - 您应该只发布复制问题所需的最少代码。您在问题中的内容很好。但是,正如我上面提到的,您问题中的代码与保存两个图像之间没有关联。另外在数据中放一个然后再多的图像是什么意思?什么数据?你想达到什么目的?如果您能澄清问题,我们可能会提供帮助。
-
好的,所以这可能会得到一个更长的消息,但我对这一切很陌生,为什么我在解释时遇到了一些问题,我希望你能理解这一点。我想要完成的不仅是将用户(在我的情况下名为)jobImage 上传到 Firebase 存储,我还想将 userProfileImage(在我的情况下名为 userImage)上传到存储。现在我将uploadedImageData 声明为imageData,compressionQualtiy 为0.5,以便在此处管理上传到firebase 存储“ storage.putData(imageData).observe(.success, handler: { (snapshot) in "
标签: ios swift firebase firebase-storage