Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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

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 firebase中的多图像上载_Swift_Firebase - Fatal编程技术网

Swift firebase中的多图像上载

Swift firebase中的多图像上载,swift,firebase,Swift,Firebase,上载图像文件url时,仅上载最后一个 if 0 < imageData.count { var imagesCount:Int = 0 var fileNumbers:Int = 0 var temp:Int = 0 for data in imageData { fileNumbers += 1 let uploadTask =

上载图像文件url时,仅上载最后一个

if 0 < imageData.count {
            var imagesCount:Int = 0
            var fileNumbers:Int = 0
            var temp:Int = 0
            for data in imageData {
                fileNumbers += 1
                let uploadTask = storageRef.child("\(fileNumbers).jpg").putData(data)
                uploadTask.observe(.success) { snapshot in
                    imagesCount += 1
                    storageRef.child("\(fileNumbers).jpg").downloadURL(completion: { url, error in
                        if error != nil {
                            print("error: \(error!)")
                        } else {
                            let downloadURL = url?.absoluteString
                            DatabaseReference.child("User").child(self.userID!).child("Puppy").child("Walk").child("WalkData").child("\(self.walkCache["dataInt"]!)").child("images").updateChildValues(["imageURL\(fileNumbers)":downloadURL!])
                            print("=============================")
                            print(fileNumbers)
                            print(downloadURL!)
                            print("=============================")
                        }
                    })
                    if self.imageData.count == imagesCount {
                        self.indicatorView.stopAnimating()
                        self.subIndicatoreView.stopAnimating()
                        FileManager.shared.clearTmpDirectory()
                        //self.view.removeFromSuperview()
                    }
                }

            }
        }
如果0
我的控制台

============================= 二,

萨缪尔 ============================= 二,


sameurl我写了一个函数来上传Firebase存储中的图像,请使用这个函数,你也可以多次调用它来并行上传多张图片。你也可以看看这篇文章或者它的android版本


我写了一个函数来上传Firebase存储中的一张图片,请使用这个函数,你也可以多次调用它来并行上传多张图片。你也可以看看这篇文章或者它的android版本

问题是
.putData(data)
,因为您省略了闭包。url仅在该语句后面的闭包中有效。通过查看Firebase示例,您可以非常轻松地修复代码。确保在放置数据之后添加闭包,并将处理url的代码移动到该闭包中,如示例所示。问题是
.putData(data)
,因为您忽略了闭包。url仅在该语句后面的闭包中有效。通过查看Firebase示例,您可以非常轻松地修复代码。确保在放置数据之后添加闭包,并将处理url的代码移动到该闭包中,如示例所示。
public func uploadData(data: Data, serverFileName: String) {

        let storage = Storage.storage()
        let storageRef = storage.reference()
        // Create a reference to the file you want to upload
        var directory = "images/"

        let fileRef = storageRef.child(directory + serverFileName);

        // Upload the file to the path "images/rivers.jpg"
        let uploadTask = fileRef.putData(data, metadata: nil) { metadata, error in
            /*   guard let metadata = metadata else {
             // Uh-oh, an error occurred!
             print("Uh-oh, an error occurred! in metadata retreiving")

             return
             } */
            // Metadata contains file metadata such as size, content-type.
            //       let size = metadata.size
            // You can also access to download URL after upload.
            fileRef.downloadURL { (url, error) in
                guard let downloadURL = url else {
                    // Uh-oh, an error occurred!


                    return
                }

                // File Uploaded Successfully
                // file url is here downloadURL.absoluteString
            }
        }
    }