2017-04-16 8 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

다음과 같은 부분을 시도하지 않은 경우에도 작동하지 않습니다. 데이터 : [문자열 : 모두] = [ "시간 (") ",""이미지": 메타 데이터! .downloadURL() !. absoluteString ] let dbRef = FIRDatabase.database().() dbRef.child. childByAutoId(). setValue (data) 그러나 저장소를 검사했는데 아무 것도하지 않았습니다. 거기에있다. – AlexBains

0

글쎄, 내 원래의 솔루션 및 @MGTLA 솔루션의 두 문제는이 주제와 관련이 이미지를 업로드 한 후 while 루프 ... 밝혀, 정확합니다.

관련 문제