2017-04-16 60 views
0

我想上传图片到使用下面的代码火力地堡贮存:火力地堡上传图片

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; 
    } 
    } 
} 

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

回答

0

免责声明:我们只说我的中间名不是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) 

    }  
} 
+0

即使认为没有尝试以下部分,它仍然不起作用:let data:[String:Any] = [ “timeStamp”:“\(Date())”, “image”:metadata! .downloadURL()!absoluteString ] let dbRef = FIRDatabase.database()。reference() dbRef.child(“imageUploads”)。childByAutoId()。setValue(data)但是我没有检查存储,在那里。 – AlexBains

0

好了,我的两个最初溶液和@MGTLA解决方案是正确的,问题原来是上传图片后while循环...这是无关的这个话题。