簡體   English   中英

從ImageView到Swift的Firebase存儲

[英]ImageView to Firebase Storage in Swift

我正在嘗試將圖像從ImageView上傳到Firebase存儲,但無法正常工作。

我在下面列出了我的代碼:我的圖像視圖稱為ProfileImage

        let storageRef = Storage.storage().reference().child("myImage.png")
        if let uploadData = self.ProfileImage.image!.pngData() {
            storageRef.putFile(from: uploadData, metadata: nil) { (metadata, error) in
                if error != nil {
                    print("error")
                    completion(nil)
                } else {
                    // your uploaded photo url.
                }
            }
        }

出現錯誤“無法將類型“數據”的值轉換為預期的參數類型“ URL”

您正在嘗試上傳數據,而不是文件。 更換

putFile

putData

它應該工作正常

試試這個代碼:-

let storageRef = Storage.storage().reference().child("myImage.png")
    if let uploadData = UIImagePNGRepresentation(self.profileImage.image!) {
        storageRef.put(uploadData, metadata: nil) { (metadata, error) in
            if error != nil {
                print("\(error.localizeDescription)")
            } else {                    
                // your uploaded photo url.
            }
       }
let refDatabase = Database.database().reference()
var refstorage = Storage.storage().reference()
let data = image.jpegData(compressionQuality: 1.0) // 
let metadata = StorageMetadata()
metadata.contentType = "image/jpeg"
let postkey = refDatabase.child("Post").childByAutoId().key
print(postkey)
let imagename = "PostImage/\(postkey).png"
refstorage = refstorage.child(imagename)
let timestamp = Date().timeIntervalSince1970 // you can use this to track time when it was uploaded. 
self.refstorage?.putData(data!, metadata: metadata, completion: { (meta, error) in

    if error == nil{
        if let imageData = meta?.downloadURL()?.absoluteString{
            // DO SOMETHING
        } else {
            print("Couldn't get the URL for image")
        }
    }
})

我知道已經回答了這個問題,但是有一種更簡單的方法可以解決此問題。 除了導入Firebase和Firebase存儲,您還必須將FirebaseUI添加到您的Podfile中並進行導入。

完成此操作后,您可以更輕松地將圖像添加到應用程序。

let storage = Storage.storage()
let storageRef = storage.reference()
let placeholderImage = UIImage(named: "placeholder.jpeg")
let reference = storageRef.child("myImage.png")
ProfileImage.sd_setImage(with: reference, placeholderImage: placholderImage)

(占位符圖像只是您在XCode中放置在資產文件夾中的透明圖像,您可以在應用程序中多次重復使用該圖像,以便在需要時在應用程序上獲取Firebase圖像。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM