Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Apple 플랫폼에서 Cloud Storage 참조 만들기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

파일은 Cloud Storage 버킷에 저장됩니다. 이 버킷의 파일은 로컬 하드 디스크의 파일 시스템이나 Firebase 실시간 데이터베이스의 데이터와 마찬가지로 계층 구조로 표시됩니다. 파일에 대한 참조를 생성하면 앱에서 파일에 액세스할 수 있습니다. 그런 다음 이러한 참조를 사용하여 데이터를 업로드 또는 다운로드하고 메타데이터를 가져오거나 업데이트하거나 파일을 삭제할 수 있습니다. 참조는 특정 파일이나 계층의 상위 수준 노드를 가리킬 수 있습니다.

Firebase 실시간 데이터베이스 를 사용한 적이 있다면 이러한 경로가 매우 익숙할 것입니다. 그러나 파일 데이터는 실시간 데이터베이스가 아닌 Cloud Storage에 저장됩니다.

참조 생성

파일을 업로드, 다운로드 또는 삭제하거나 해당 메타데이터를 가져오거나 업데이트하기 위한 참조를 만듭니다. 참조는 클라우드에 있는 파일에 대한 포인터로 생각할 수 있습니다. 참조는 간단하므로 필요한 만큼 만들 수 있습니다. 또한 여러 작업에 재사용할 수 있습니다.

참조는 FirebaseStorage 서비스를 사용하고 해당 reference 메서드를 호출하여 생성됩니다.

빠른

// Get a reference to the storage service using the default Firebase App
let storage = Storage.storage()

// Create a storage reference from our storage service
let storageRef = storage.reference()
    

오브젝티브-C

// Get a reference to the storage service using the default Firebase App
FIRStorage *storage = [FIRStorage storage];

// Create a storage reference from our storage service
FIRStorageReference *storageRef = [storage reference];
    

기존 참조에서 child 메서드를 사용하여 'images/space.jpg' 와 같이 트리 아래 위치에 대한 참조를 만들 수 있습니다.

빠른

// Create a child reference
// imagesRef now points to "images"
let imagesRef = storageRef.child("images")

// Child references can also take paths delimited by '/'
// spaceRef now points to "images/space.jpg"
// imagesRef still points to "images"
var spaceRef = storageRef.child("images/space.jpg")

// This is equivalent to creating the full reference
let storagePath = "\(your_firebase_storage_bucket)/images/space.jpg"
spaceRef = storage.reference(forURL: storagePath)
    

오브젝티브-C

// Create a child reference
// imagesRef now points to "images"
FIRStorageReference *imagesRef = [storageRef child:@"images"];

// Child references can also take paths delimited by '/'
// spaceRef now points to "images/space.jpg"
// imagesRef still points to "images"
FIRStorageReference *spaceRef = [storageRef child:@"images/space.jpg"];

// This is equivalent to creating the full reference
spaceRef = [storage referenceForURL:@"gs://<your-firebase-storage-bucket>/images/space.jpg"];
     

parentroot 메소드를 사용하여 파일 계층 구조에서 위로 탐색할 수도 있습니다. parent 는 한 수준 위로 이동하고 root 는 맨 위로 이동합니다.

빠른

// Parent allows us to move to the parent of a reference
// imagesRef now points to 'images'
let imagesRef = spaceRef.parent()

// Root allows us to move all the way back to the top of our bucket
// rootRef now points to the root
let rootRef = spaceRef.root()
    

오브젝티브-C

// Parent allows us to move to the parent of a reference
// imagesRef now points to 'images'
imagesRef = [spaceRef parent];

// Root allows us to move all the way back to the top of our bucket
// rootRef now points to the root
FIRStorageReference *rootRef = [spaceRef root];
    

child , parentroot 는 각각 참조를 반환하므로 여러 번 함께 연결할 수 있습니다. nilrootparent 는 예외입니다.

빠른

// References can be chained together multiple times
// earthRef points to "images/earth.jpg"
let earthRef = spaceRef.parent()?.child("earth.jpg")

// nilRef is nil, since the parent of root is nil
let nilRef = spaceRef.root().parent()
    

오브젝티브-C

// References can be chained together multiple times
// earthRef points to "images/earth.jpg"
FIRStorageReference *earthRef = [[spaceRef parent] child:@"earth.jpg"];

// nilRef is nil, since the parent of root is nil
FIRStorageReference *nilRef = [[spaceRef root] parent];
    

참조 속성

fullPath , namebucket 속성을 사용하여 참조가 가리키는 파일을 더 잘 이해하기 위해 참조를 검사할 수 있습니다. 이러한 속성은 파일의 전체 경로, 이름 및 버킷을 가져옵니다.

빠른

// Reference's path is: "images/space.jpg"
// This is analogous to a file path on disk
spaceRef.fullPath

// Reference's name is the last segment of the full path: "space.jpg"
// This is analogous to the file name
spaceRef.name

// Reference's bucket is the name of the storage bucket where files are stored
spaceRef.bucket
    

오브젝티브-C

// Reference's path is: "images/space.jpg"
// This is analogous to a file path on disk
spaceRef.fullPath;

// Reference's name is the last segment of the full path: "space.jpg"
// This is analogous to the file name
spaceRef.name;

// Reference's bucket is the name of the storage bucket where files are stored
spaceRef.bucket;
    

참조에 대한 제한 사항

참조 경로와 이름에는 유효한 유니코드 문자의 시퀀스가 ​​포함될 수 있지만 다음과 같은 특정 제한 사항이 적용됩니다.

  1. reference.fullPath의 총 길이는 UTF-8로 인코딩된 경우 1에서 1024바이트 사이여야 합니다.
  2. 캐리지 리턴 또는 줄 바꿈 문자가 없습니다.
  3. # , [ , ] , * 또는 ? , Firebase 실시간 데이터베이스 또는 gsutil 과 같은 다른 도구에서는 제대로 작동하지 않기 때문입니다.

전체 예

빠른

// Points to the root reference
let storageRef = Storage.storage().reference()

// Points to "images"
let imagesRef = storageRef.child("images")

// Points to "images/space.jpg"
// Note that you can use variables to create child values
let fileName = "space.jpg"
let spaceRef = imagesRef.child(fileName)

// File path is "images/space.jpg"
let path = spaceRef.fullPath

// File name is "space.jpg"
let name = spaceRef.name

// Points to "images"
let images = spaceRef.parent()
    

오브젝티브-C

// Points to the root reference
FIRStorageReference *storageRef = [[FIRStorage storage] reference];

// Points to "images"
FIRStorageReference *imagesRef = [storageRef child:@"images"];

// Points to "images/space.jpg"
// Note that you can use variables to create child values
NSString *fileName = @"space.jpg";
FIRStorageReference *spaceRef = [imagesRef child:fileName];

// File path is "images/space.jpg"
NSString *path = spaceRef.fullPath;

// File name is "space.jpg"
NSString *name = spaceRef.name;

// Points to "images"
imagesRef = [spaceRef parent];
    

다음으로 Cloud Storage에 파일을 업로드 하는 방법을 알아보겠습니다.