สร้างข้อมูลอ้างอิง Cloud Storage บนเว็บ

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

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

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

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

หากต้องการสร้างข้อมูลอ้างอิง ให้รับอินสแตนซ์ของบริการ Storage โดยใช้ getStorage() จากนั้นเรียก ref() ด้วยบริการเป็นอาร์กิวเมนต์ ข้อมูลอ้างอิงนี้ชี้ไปที่รากของที่เก็บข้อมูล Cloud Storage ของคุณ

Web modular API

import { getStorage, ref } from "firebase/storage";

// Get a reference to the storage service, which is used to create references in your storage bucket
const storage = getStorage();

// Create a storage reference from our storage service
const storageRef = ref(storage);

Web namespaced API

// Get a reference to the storage service, which is used to create references in your storage bucket
var storage = firebase.storage();

// Create a storage reference from our storage service
var storageRef = storage.ref();

คุณสามารถสร้างการอ้างอิงไปยังตำแหน่งที่อยู่ด้านล่างของแผนผัง เช่น 'images/space.jpg' โดยส่งผ่านเส้นทางนี้เป็นอาร์กิวเมนต์ที่สองเมื่อเรียก ref()

Web modular API

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();

// Create a child reference
const imagesRef = ref(storage, 'images');
// imagesRef now points to 'images'

// Child references can also take paths delimited by '/'
const spaceRef = ref(storage, 'images/space.jpg');
// spaceRef now points to "images/space.jpg"
// imagesRef still points to "images"

Web namespaced API

// Create a child reference
var imagesRef = storageRef.child('images');
// imagesRef now points to 'images'

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

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

Web modular API

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();
const spaceRef = ref(storage, 'images/space.jpg');

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

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

Web namespaced API

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

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

child() , parent และ root สามารถเชื่อมโยงเข้าด้วยกันได้หลายครั้ง เนื่องจากแต่ละรายการส่งคืนข้อมูลอ้างอิง ข้อยกเว้นคือ parent ของ root ซึ่งเป็น null

Web modular API

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();
const spaceRef = ref(storage, 'images/space.jpg');

// References can be chained together multiple times
const earthRef = ref(spaceRef.parent, 'earth.jpg');
// earthRef points to 'images/earth.jpg'

// nullRef is null, since the parent of root is null
const nullRef = spaceRef.root.parent;

Web namespaced API

// References can be chained together multiple times
var earthRef = spaceRef.parent.child('earth.jpg');
// earthRef points to 'images/earth.jpg'

// nullRef is null, since the parent of root is null
var nullRef = spaceRef.root.parent;

คุณสมบัติอ้างอิง

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

Web modular API

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();
const spaceRef = ref(storage, 'images/space.jpg');

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

Web namespaced API

// 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 ถึง 1,024 ไบต์เมื่อเข้ารหัส UTF-8
  2. ไม่มีอักขระ Carriage Return หรือ Line Feed
  3. หลีกเลี่ยงการใช้ # , [ , ] , * หรือ ? เนื่องจากเครื่องมือเหล่านี้ทำงานได้ไม่ดีกับเครื่องมืออื่นๆ เช่น Firebase Realtime Database หรือ gsutil

ตัวอย่างแบบเต็ม

Web modular API

import { getStorage, ref } from "firebase/storage";

const storage = getStorage();

// Points to the root reference
const storageRef = ref(storage);

// Points to 'images'
const imagesRef = ref(storageRef, 'images');

// Points to 'images/space.jpg'
// Note that you can use variables to create child values
const fileName = 'space.jpg';
const spaceRef = ref(imagesRef, fileName);

// File path is 'images/space.jpg'
const path = spaceRef.fullPath;

// File name is 'space.jpg'
const name = spaceRef.name;

// Points to 'images'
const imagesRefAgain = spaceRef.parent;

Web namespaced API

// Points to the root reference
var storageRef = firebase.storage().ref();

// Points to 'images'
var imagesRef = storageRef.child('images');

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

// File path is 'images/space.jpg'
var path = spaceRef.fullPath;

// File name is 'space.jpg'
var name = spaceRef.name;

// Points to 'images'
var imagesRef = spaceRef.parent;

ต่อไป มาดูวิธี อัปโหลดไฟล์ ไปยัง Cloud Storage กัน