将图像上载到Swift 4中的Firebase存储
我想上传每个图像的两个副本,一个全尺寸和一个缩略图。我已经在这里找到了关于SO和Firebase文档的答案 使用下面的代码,只有缩略图图像保存到存储器中。我如何修复它,以便上传两个图像?显然,我还没有完全理解如何处理返回/关闭。非常感谢您的帮助 当用户点击upload按钮时,会调用这一系列方法将图像上载到Swift 4中的Firebase存储,swift,firebase,firebase-storage,Swift,Firebase,Firebase Storage,我想上传每个图像的两个副本,一个全尺寸和一个缩略图。我已经在这里找到了关于SO和Firebase文档的答案 使用下面的代码,只有缩略图图像保存到存储器中。我如何修复它,以便上传两个图像?显然,我还没有完全理解如何处理返回/关闭。非常感谢您的帮助 当用户点击upload按钮时,会调用这一系列方法 self.uploadAndGetFullSizeImageDownloadURL(completion: { (url) in print("Fullsize URL:
self.uploadAndGetFullSizeImageDownloadURL(completion: { (url) in
print("Fullsize URL: \(url) is stored")
self.fullSizeDownloadURL = url
self.uploadAndGetThumbNailImageDownloadURL(completion: { (url) in
print("Thumbnail URL: \(url) is stored")
self.thumbNailDownloadURL = url
// Save image info to database
self.saveImageInfoToDatabase(fullSizeURL: self.fullSizeDownloadURL, thumbNailURL: self.thumbNailDownloadURL, completion: { (finished) in
...
})
})
})
上传和获取URL的方法如下所示:
func uploadAndGetFullSizeImageDownloadURL(completion: @escaping (String) -> Void) {
var fullUrlStr = ""
// Get imageData
let fullSizeImageData = self.getImageData(size: "fullSize")
// Upload fullsize image to storage
let fullSizeStorageRef = self.sRef.child("\(String(describing: uid!)), \(createdAt!)")
fullSizeStorageRef.putData(fullSizeImageData, metadata: nil, completion: {
(metadata, error) in
print("Fullsize image is stored")
// Get the fullsize downloadURL
fullSizeStorageRef.downloadURL(completion: { (url, error) in
if let downloadURL = url?.absoluteString {
fullUrlStr = downloadURL
//Return fullsize downloadURL
completion(fullUrlStr)
}
})
})
}
找到了一种方法:
这是一种不同的方法,但效果很好 您能展示一下控制台上打印的内容吗?我的意思是:
print(“存储完整大小的URL:\(URL)”)
和print(“存储缩略图URL:\(URL))
URL打印的字符串与您可以在存储控制台中查看的下载URL相同。显然,我只能将其与缩略图进行比较(因为没有支持全尺寸图像),但我必须假设它是正确的。因此,检索到全尺寸图像的URL,但没有图像保存在存储器中。我认为putData方法还没有完全完成,但我不明白为什么。