Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将图像上载到Swift 4中的Firebase存储_Swift_Firebase_Firebase Storage - Fatal编程技术网

将图像上载到Swift 4中的Firebase存储

将图像上载到Swift 4中的Firebase存储,swift,firebase,firebase-storage,Swift,Firebase,Firebase Storage,我想上传每个图像的两个副本,一个全尺寸和一个缩略图。我已经在这里找到了关于SO和Firebase文档的答案 使用下面的代码,只有缩略图图像保存到存储器中。我如何修复它,以便上传两个图像?显然,我还没有完全理解如何处理返回/关闭。非常感谢您的帮助 当用户点击upload按钮时,会调用这一系列方法 self.uploadAndGetFullSizeImageDownloadURL(completion: { (url) in print("Fullsize URL:

我想上传每个图像的两个副本,一个全尺寸和一个缩略图。我已经在这里找到了关于SO和Firebase文档的答案

使用下面的代码,只有缩略图图像保存到存储器中。我如何修复它,以便上传两个图像?显然,我还没有完全理解如何处理返回/关闭。非常感谢您的帮助

当用户点击upload按钮时,会调用这一系列方法

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方法还没有完全完成,但我不明白为什么。