Загрузка нескольких файлов в хранилище Firebase очень медленная - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь загрузить два файла в хранилище 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
            })
        }

    }
}
...