将多个文件上传到Firebase存储非常慢

时间:2019-07-04 19:11:48

标签: ios swift firebase firebase-storage

我正在尝试同时将两个文件上传到Firebase存储。据我了解,这是不可能的,所以我要做的是先上传一个文件,然后再上传一个文件。 现在可以使用,但是上传速度非常慢。是因为我的代码有问题还是因为我正在等待两次上传而不是一次上传。

var index = 0
var urls = [String]()
fileprivate func uploadToServer(data: Any) {

    if index == 0 {
        let filename = NSUUID().uuidString
        let storageRef = Storage.storage().reference().child("posts").child(filename)
        storageRef.putData(data as! Data, metadata: nil) { (metadata, err) in
            if let err = err {
                self.navigationItem.rightBarButtonItem?.isEnabled = true
                print("Failed to upload post image:", err)
                self.showHUDwithError(error: err)
                return
            }
            storageRef.downloadURL(completion: { (downloadURL, err) in
                if let err = err {
                    print("Failed to fetch downloadURL:", err)
                    self.showHUDwithError(error: err)
                    return
                }
                guard let thisUrl = downloadURL?.absoluteString else { return }
                self.urls.append(thisUrl)
                self.index = self.index + 1
                if self.type == "image" {
                    // we are done then so do the save to server call here
                    self.saveToDatabaseWithImageUrl()
                } else {
                    self.uploadToServer(data: self.videoUrl as Any)
                }
            })
        }
        return
    }

    if index == 1 {
        let filename = NSUUID().uuidString
        let storageRef = Storage.storage().reference().child("posts").child(filename)
        storageRef.putFile(from: data as! URL, metadata: nil) { (metadata, err) in
            if let err = err {
                self.navigationItem.rightBarButtonItem?.isEnabled = true
                print("Failed to upload post image:", err)
                self.showHUDwithError(error: err)
                return
            }
            storageRef.downloadURL(completion: { (downloadURL, err) in
                if let err = err {
                    print("Failed to fetch downloadURL:", err)
                    self.showHUDwithError(error: err)
                    return
                }
                guard let thisUrl = downloadURL?.absoluteString else { return }
                self.urls.append(thisUrl)
                self.saveToDatabaseWithImageUrl()
                self.index = 0
            })
        }

    }
}

0 个答案:

没有答案