Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 2 form Firebase存储上下载图像_Firebase_Swift2_Firebase Storage - Fatal编程技术网

在Swift 2 form Firebase存储上下载图像

在Swift 2 form Firebase存储上下载图像,firebase,swift2,firebase-storage,Firebase,Swift2,Firebase Storage,每当我从Firebase存储下载图像时,它的下载效果都非常好,但一旦我尝试将imageview“my”更改为它,imageview就会消失。我没有限制,我导航到本地URL,在那里找到了完美的图像。有什么帮助吗?我做错什么了吗 func loadImages(){ let documentDirectoryURL = try! NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .

每当我从Firebase存储下载图像时,它的下载效果都非常好,但一旦我尝试将imageview“my”更改为它,imageview就会消失。我没有限制,我导航到本地URL,在那里找到了完美的图像。有什么帮助吗?我做错什么了吗

func loadImages(){
        let documentDirectoryURL = try! NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true)

            let newRef = storageRef!.child("Images/0.jpg")
            let fileDestinationUrl = documentDirectoryURL.URLByAppendingPathComponent("p.jpg")


            let downloadTask = newRef.writeToFile(fileDestinationUrl){ (URL, error) -> Void in
                if (error != nil) {
                    print("problem")
                } else {
                    print("done")
                }
            }

        downloadTask.observeStatus(.Success) { (snapshot) -> Void in
            print(fileDestinationUrl)
            var temp = String(fileDestinationUrl)
            print(temp)
            var my = UIImage(contentsOfFile: temp)
            self.image.image = my
        }


       }

在控制台中打印destinationUrl。转到下载的文件位置,打开终端,在终端中拖放下载的图像,终端将为您提供其实际路径。现在比较终端为您提供的路径和控制台为您提供的路径,并将其匹配。大多数人都认为它们是不同的,所以要相应地改变它们

示例代码:-

上传代码:-

func profilePictureUploading(infoOnThePicture : [String : AnyObject],completionBlock : (()->Void)) {

    if let referenceUrl = infoOnThePicture[UIImagePickerControllerReferenceURL] {
        print(referenceUrl)
        let assets = PHAsset.fetchAssetsWithALAssetURLs([referenceUrl as! NSURL], options: nil)
        print(assets)
        let asset = assets.firstObject
        print(asset)
        asset?.requestContentEditingInputWithOptions(nil, completionHandler: { (ContentEditingInput, infoOfThePicture)  in

            let imageFile = ContentEditingInput?.fullSizeImageURL
            print("imagefile : \(imageFile)")

            let filePath = FIRAuth.auth()!.currentUser!.uid +  "/\(Int(NSDate.timeIntervalSinceReferenceDate() * 1000))/\(imageFile!.lastPathComponent!)"
            print("filePath : \(filePath)")

                FIRControllerClass.storageRef.child("ProfilePictures").child(filePath).putFile(imageFile!, metadata: nil, completion: { (metadata, error) in

                         if error != nil{

                            print("error in uploading image : \(error)")

                         }

                          else{

                                print("metadata in : \(metadata!)")

                                print(metadata?.downloadURL())

                                print("The pic has been uploaded")

                                print("download url : \(metadata?.downloadURL())")

                                self.uploadSuccess(metadata!, storagePath: filePath)

                                completionBlock()

                }

            })
        })

    }else{

            print("No reference URL found!")

    }
}
下载代码:-

    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    print("paths in user home page : \(paths)")

    let documentDirectory = paths[0]
    print("documents directory in homePage : \(documentDirectory)")

    let filePath = "file:\(documentDirectory)/\(user!.uid).jpg"
    var filePath2 : String = filePath
    print(filePath)

    let storagePath = NSUserDefaults.standardUserDefaults().objectForKey("storagePath") as! String
    print("storagePath is : \(storagePath)")

    storageRef.child("ProfilePictures").child(storagePath).writeToFile(NSURL.init(string: filePath)! , completion :

    { (url, err) -> Void in

        if let error = err{

            print("error while downloading your image :\(error)")


        }else{

            print("Download successful !")
            print("the file filePath of the downloaded file : \(filePath)")
            filePath2 = "\(documentDirectory)/\(self.user!.uid).jpg"
            if let downloadedImage = UIImage(contentsOfFile: filePath2){
            self.profilePictureImageView.image = downloadedImage
            print("displayed")
            }else{
            print("unable to display")
            }
        }
    })
其中storagePath是存储在NSUserDefaults中供以后参考的内容,例如,在将图像上载到firebase存储时


我给你的代码块只是众多解决方案中的一个,有很多方法可以做到这一点,请转到控制台中的打印目标URL。转到下载的文件位置,打开终端,在终端中拖放下载的图像,终端将为您提供其实际路径。现在比较终端提供给您的路径和console提供给您的路径,并匹配它们。大多数人都认为它们是不同的,所以要相应地改变它们

示例代码:-

上传代码:-

func profilePictureUploading(infoOnThePicture : [String : AnyObject],completionBlock : (()->Void)) {

    if let referenceUrl = infoOnThePicture[UIImagePickerControllerReferenceURL] {
        print(referenceUrl)
        let assets = PHAsset.fetchAssetsWithALAssetURLs([referenceUrl as! NSURL], options: nil)
        print(assets)
        let asset = assets.firstObject
        print(asset)
        asset?.requestContentEditingInputWithOptions(nil, completionHandler: { (ContentEditingInput, infoOfThePicture)  in

            let imageFile = ContentEditingInput?.fullSizeImageURL
            print("imagefile : \(imageFile)")

            let filePath = FIRAuth.auth()!.currentUser!.uid +  "/\(Int(NSDate.timeIntervalSinceReferenceDate() * 1000))/\(imageFile!.lastPathComponent!)"
            print("filePath : \(filePath)")

                FIRControllerClass.storageRef.child("ProfilePictures").child(filePath).putFile(imageFile!, metadata: nil, completion: { (metadata, error) in

                         if error != nil{

                            print("error in uploading image : \(error)")

                         }

                          else{

                                print("metadata in : \(metadata!)")

                                print(metadata?.downloadURL())

                                print("The pic has been uploaded")

                                print("download url : \(metadata?.downloadURL())")

                                self.uploadSuccess(metadata!, storagePath: filePath)

                                completionBlock()

                }

            })
        })

    }else{

            print("No reference URL found!")

    }
}
下载代码:-

    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    print("paths in user home page : \(paths)")

    let documentDirectory = paths[0]
    print("documents directory in homePage : \(documentDirectory)")

    let filePath = "file:\(documentDirectory)/\(user!.uid).jpg"
    var filePath2 : String = filePath
    print(filePath)

    let storagePath = NSUserDefaults.standardUserDefaults().objectForKey("storagePath") as! String
    print("storagePath is : \(storagePath)")

    storageRef.child("ProfilePictures").child(storagePath).writeToFile(NSURL.init(string: filePath)! , completion :

    { (url, err) -> Void in

        if let error = err{

            print("error while downloading your image :\(error)")


        }else{

            print("Download successful !")
            print("the file filePath of the downloaded file : \(filePath)")
            filePath2 = "\(documentDirectory)/\(self.user!.uid).jpg"
            if let downloadedImage = UIImage(contentsOfFile: filePath2){
            self.profilePictureImageView.image = downloadedImage
            print("displayed")
            }else{
            print("unable to display")
            }
        }
    })
其中storagePath是存储在NSUserDefaults中供以后参考的内容,例如,在将图像上载到firebase存储时

我给你的代码块只是众多解决方案中的一个,有很多方法可以做到这一点,请转到