swift - Firebase 上传图片

标签 swift swift3 firebase-storage

我正在尝试使用以下代码将图像上传到 Firebase 存储:

let storageRef = FIRStorage.storage().reference()
let imageRef = storageRef.child("AAA").child("BBB").child("CCC.jpeg")
let metaData = FIRStorageMetadata()
metaData.contentType = "image/jpeg"
if let uploadData = UIImageJPEGRepresentation(sampleImage, 0.5){
            imageRef.put(uploadData, metadata: metaData, completion: { (metaData, error) in
                print("finished")
                if error != nil{
                    print(error!.localizedDescription)
                }else{
                    print("success")
                }
            })
        }else{
            print("Cannot convert image to JPEG format")
        }

问题是上面的代码没有做任何事情,换句话说,什么也没有打印出来。我尝试将字符串上传到 Firebase 数据库,并且成功了。我还检查了 Firebase 存储的规则:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read: if true;
      allow write: if request.auth != null;
    }
  }
}

那么,我做错了什么?有什么我需要设置的吗?请帮忙!!

最佳答案

免责声明:假设我的中间名不是 SwiftLint。

尝试一下,并确保您的数据库规则也类似。您应该在数据库中获得一个链接,该链接将指向存储中的图像。

if let theData = UIImageJPEGRepresentation(sampleImage, 0.5) {
    self.helper(photoData:theData)
}
// ^^ this can happen elsewhere ^^

func upload(photoData:Data) {
    let imgName = Int(round(Date().timeIntervalSince1970)

    let metadata = FIRStorageMetadata()
    metadata.contentType = "image/jpeg"

    let imageRef = FIRStorage.storage().reference().child("AAA/BBB/\(imgName).jpg")

    imageRef.put(photoData, metadata: metadata) { (metadata, error) in
        if let error = error {
            print("Error uploading: \(error)")
            return
        }

        let data:[String:Any] = [
            "timeStamp":"\(Date())",
            "image":metadata!.downloadURL()!.absoluteString
        ]

        let dbRef = FIRDatabase.database().reference()
        dbRef.child("imageUploads").childByAutoId().setValue(data)

    }    
}

关于swift - Firebase 上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433726/

相关文章:

ios - 拖动 UIButton 而不将其移动到中心 [Swift 3]

ios - 如何在 swift 3 中将 Tableviewcell 显示为气泡?

swift - 如何从获取请求数组结果中分配键,并从空字典中的文本字段输入中分配值?

ios - Firebase 存储数据显示两次

javascript - Firebase 存储错误

ios - 我不断收到 : fatal error: Index out of range

ios - 杀死应用程序后 Facebook AccessToken 为零(iOS)

ios - 从自定义键盘应用程序扩展发出 HTTP 请求

Swift随机浮点 fatal error : no uniform distribution on an infinite range

ios - 图像在 TableView 的数据搜索结果中表现不准确