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 บนแพลตฟอร์ม Apple

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

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

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

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

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

การอ้างอิงถูกสร้างขึ้นโดยใช้บริการ 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];
    

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

สวิฟต์

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

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

สวิฟต์

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

สวิฟต์

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

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

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

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