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

Unity용 Cloud Storage로 Cloud Storage 참조 만들기

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

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

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

참조 생성

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

참조는 GetReferenceFromUrl() 메서드를 호출하고 gs://<your-cloud-storage-bucket> 형식의 URL을 전달하여 Firebase 앱의 Firebase.Storage.FirebaseStorage 서비스에서 생성됩니다. Firebase 콘솔저장소 섹션 에서 이 URL을 찾을 수 있습니다.

// Get a reference to the storage service, using the default Firebase App
FirebaseStorage storage = FirebaseStorage.DefaultInstance;

// Create a storage reference from our storage service
StorageReference storageRef =
    storage.GetReferenceFromUrl("gs://<your-cloud-storage-bucket>");

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

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

// Child references can also take paths delimited by '/' such as:
// "images/space.jpg".
StorageReference spaceRef = imagesRef.Child("space.jpg");
// spaceRef now points to "images/space.jpg"
// imagesRef still points to "images"

// This is equivalent to creating the full referenced
StorageReference spaceRefFull = storage.GetReferenceFromUrl(
    "gs://<your-cloud-storage-bucket>/images/space.jpg");

또한 ParentRoot 메서드를 사용하여 파일 계층 구조에서 위로 탐색할 수 있습니다. Parent 는 한 수준 위로 이동하고 Root 는 맨 위로 이동합니다.

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

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

Child , ParentRoot 는 각각 참조를 반환하므로 여러 번 함께 연결할 수 있습니다. 잘못된 StorageReferenceRootParent 항목은 예외입니다.

// References can be chained together multiple times
// earthRef points to "images/earth.jpg"
StorageReference earthRef =
    spaceRef.Parent.Child("earth.jpg");

// nullRef is null since the parent of root is an invalid StorageReference
StorageReference nullRef = spaceRef.Root.Parent;

참조 방법

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

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

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

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

참조에 대한 제한 사항

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

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

전체 예

FirebaseStorage storage = FirebaseStorage.DefaultInstance;

// Points to the root reference
StorageReference storageRef =
    storage.GetReferenceFromUrl("gs://<your-bucket-name>");

// Points to "images"
StorageReference imagesRef = storageRef.Child("images");

// Points to "images/space.jpg"
// Note that you can use variables to create child values
string filename = "space.jpg";
StorageReference spaceRef = imagesRef.Child(filename);

// File path is "images/space.jpg"
string path = spaceRef.Path;

// File name is "space.jpg"
string name = spaceRef.Name;

// Points to "images"
StorageReference imagesRef = spaceRef.Parent;

다음 단계

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