Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

สร้างข้อมูลอ้างอิง Cloud Storage ด้วย Cloud Storage for Unity

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ไฟล์ของคุณจัดเก็บไว้ในที่ เก็บข้อมูล Cloud Storage ไฟล์ในบัคเก็ตนี้แสดงเป็นโครงสร้างแบบลำดับขั้น เช่นเดียวกับระบบไฟล์ในฮาร์ดดิสก์ในเครื่องของคุณ หรือข้อมูลใน Firebase Realtime Database ด้วยการสร้างการอ้างอิงไปยังไฟล์ แอปของคุณจะเข้าถึงไฟล์ได้ ข้อมูลอ้างอิงเหล่านี้สามารถใช้เพื่ออัปโหลดหรือดาวน์โหลดข้อมูล รับหรืออัปเดตข้อมูลเมตา หรือลบไฟล์ การอ้างอิงสามารถชี้ไปที่ไฟล์เฉพาะหรือโหนดระดับที่สูงกว่าในลำดับชั้น

หากคุณเคยใช้ Firebase Realtime Database เส้นทางเหล่านี้น่าจะคุ้นเคยกับคุณเป็นอย่างดี อย่างไรก็ตาม ข้อมูลไฟล์ของคุณจัดเก็บไว้ใน Cloud Storage ไม่ใช่ ใน Realtime Database

สร้างข้อมูลอ้างอิง

สร้างข้อมูลอ้างอิงเพื่ออัปโหลด ดาวน์โหลด หรือลบไฟล์ หรือรับหรืออัปเดตข้อมูลเมตา การอ้างอิงสามารถถือเป็นตัวชี้ไปยังไฟล์ในระบบคลาวด์ การอ้างอิงนั้นมีน้ำหนักเบา คุณจึงสร้างได้มากเท่าที่คุณต้องการ นอกจากนี้ยังสามารถใช้ซ้ำได้สำหรับการดำเนินการหลายอย่าง

การอ้างอิงถูกสร้างขึ้นจากบริการ Firebase.Storage.FirebaseStorage บนแอป Firebase โดยเรียก GetReferenceFromUrl() และส่งผ่าน URL ในรูปแบบ gs://<your-cloud-storage-bucket> คุณสามารถค้นหา URL นี้ได้ใน ส่วนพื้นที่เก็บข้อมูล ของ คอนโซล Firebase

// 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>");

คุณสามารถสร้างการอ้างอิงไปยังตำแหน่งที่อยู่ด้านล่างในแผนผังได้ เช่น 'images/space.jpg' โดยใช้เมธอด child ในข้อมูลอ้างอิงที่มีอยู่

// 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");

คุณยังสามารถใช้เมธอด Parent และ Root เพื่อนำทางขึ้นในลำดับชั้นไฟล์ของเรา 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 , Parent และ Root เข้าด้วยกันได้หลายครั้ง เนื่องจากแต่ละครั้งจะส่งคืนข้อมูลอ้างอิง ข้อยกเว้นคือ Parent ของ Root ซึ่งเป็น StorageReference ที่ไม่ถูกต้อง

// 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 , Name และ Bucket คุณสมบัติเหล่านี้ได้รับพาธ ชื่อ และบัคเก็ตแบบเต็มของไฟล์

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

ข้อ จำกัด ในการอ้างอิง

เส้นทางและชื่ออ้างอิงสามารถมีลำดับของอักขระ Unicode ที่ถูกต้อง แต่มีการกำหนดข้อจำกัดบางประการ ได้แก่:

  1. ความยาวทั้งหมดของ reference.Path เส้นทางต้องอยู่ระหว่าง 1 ถึง 1024 ไบต์เมื่อเข้ารหัส UTF-8
  2. ไม่มีอักขระขึ้นบรรทัดใหม่หรือขึ้นบรรทัดใหม่
  3. หลีกเลี่ยงการใช้ # , [ , ] , * , หรือ ? เนื่องจากสิ่งเหล่านี้ใช้งานไม่ได้กับเครื่องมืออื่นๆ เช่น Firebase Realtime Database หรือ 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 กัน