צור הפניה לאחסון ענן ב- Android

הקבצים שלך מאוחסנים אחסון בענן דלי. הקבצים בדלי זה מוצגים במבנה היררכי, ממש כמו מערכת הקבצים בדיסק הקשיח המקומי שלך, או הנתונים במאגר הנתונים בזמן אמת של Firebase. על ידי יצירת הפניה לקובץ, האפליקציה שלך מקבלת גישה אליו. לאחר מכן ניתן להשתמש בהפניות אלה להעלות או להוריד נתונים, לקבל או לעדכן מטא נתונים או למחוק את הקובץ. הפניה יכולה להצביע על קובץ ספציפי או על צומת ברמה גבוהה יותר בהיררכיה.

אם השתמשת מסד Firebase זמן האמת , נתיבים אלו צריכים להיראות מאוד מוכרים לך. עם זאת, נתוני הקובץ מאוחסן אחסון בענן לא במסד הנתונים בזמן אמת.

צור הפניה

צור הפניה להעלאה, הורדה או מחיקה של קובץ, או כדי לקבל או לעדכן את המטא -נתונים שלו. ניתן לחשוב על הפניה כמצביע לקובץ בענן. הפניות קלות משקל, כך שתוכל ליצור כמה שאתה צריך. הם ניתנים לשימוש חוזר עבור מספר פעולות.

צור הפניה באמצעות FirebaseStorage למשל סינגלטון וקראו שלה getReference() שיטה.

ג'אווה

// Create a storage reference from our app
StorageReference storageRef = storage.getReference();

קוטלין+KTX

// Create a storage reference from our app
var storageRef = storage.reference

הבא, אתה יכול ליצור הפניה למיקום נמוך בעץ, אומר "images/space.jpg" על ידי שימוש child() שיטה על פנייה קיימת.

ג'אווה

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

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

קוטלין+KTX

// Create a child reference
// imagesRef now points to "images"
var imagesRef: StorageReference? = storageRef.child("images")

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

אתה יכול גם להשתמש getParent() ו getRoot() שיטות לניווט בהיררכית הקובץ שלנו. getParent() מנווט רמה אחת למעלה, בעוד getRoot() מנווט כל הדרך לפסגה.

ג'אווה

// getParent allows us to move our reference to a parent node
// imagesRef now points to 'images'
imagesRef = spaceRef.getParent();

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

קוטלין+KTX

// parent allows us to move our reference to a parent node
// 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
val rootRef = spaceRef.root

child() , getParent() , ולאחר getRoot() יכול להיות כבול יחד מספר פעמים, כמו כל מחזיר הפניה. אבל קורא getRoot().getParent() מחזירה null .

ג'אווה

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

// nullRef is null, since the parent of root is null
StorageReference nullRef = spaceRef.getRoot().getParent();

קוטלין+KTX

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

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

מאפייני הפניה

אתה יכול לבדוק אזכור כדי להבין טוב יותר את הקבצים הם מצביעים באמצעות getPath() , getName() , ולאחר getBucket() שיטות. שיטות אלה מקבלות את הנתיב המלא, השם והדלי של הקובץ.

ג'אווה

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

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

// Reference's bucket is the name of the storage bucket that the files are stored in
spaceRef.getBucket();

קוטלין+KTX

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

// 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 that the files are stored in
spaceRef.bucket

מגבלות על הפניות

נתיבי הפניה ושמות יכולים להכיל כל רצף של תווים חוקיים של Unicode, אך מגבלות מסוימות מוטלות, כולל:

  1. אורך כולל של reference.fullPath חייב להיות בין 1 ל- 1024 בתים כאשר מקודד UTF-8.
  2. ללא תווי החזרה לכרכרה או הזנת שורה.
  3. הימנע משימוש # , [ , ] , * , או ? , כמו אלה אינם פועלים היטב עם כלים אחרים כגון מסד Firebase זמן אמת או gsutil .

דוגמא מלאה

ג'אווה

// Points to the root reference
storageRef = storage.getReference();

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

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

// File path is "images/space.jpg"
String path = spaceRef.getPath();

// File name is "space.jpg"
String name = spaceRef.getName();

// Points to "images"
imagesRef = spaceRef.getParent();

קוטלין+KTX

// Points to the root reference
storageRef = storage.reference

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

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

// File path is "images/space.jpg"
val path = spaceRef.path

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

// Points to "images"
imagesRef = spaceRef.parent

הבא, בואו ללמוד כיצד להעלות קבצים באחסון בענן.