// Get a reference to the storage service using the default Firebase Appletstorage=Storage.storage()// Create a storage reference from our storage serviceletstorageRef=storage.reference()
Objective-C
// Get a reference to the storage service using the default Firebase AppFIRStorage*storage=[FIRStoragestorage];// Create a storage reference from our storage serviceFIRStorageReference*storageRef=[storagereference];
// Create a child reference// imagesRef now points to "images"letimagesRef=storageRef.child("images")// Child references can also take paths delimited by '/'// spaceRef now points to "images/space.jpg"// imagesRef still points to "images"varspaceRef=storageRef.child("images/space.jpg")// This is equivalent to creating the full referenceletstoragePath="\(your_firebase_storage_bucket)/images/space.jpg"spaceRef=storage.reference(forURL:storagePath)
Objective-C
// Create a child reference// imagesRef now points to "images"FIRStorageReference*imagesRef=[storageRefchild:@"images"];// Child references can also take paths delimited by '/'// spaceRef now points to "images/space.jpg"// imagesRef still points to "images"FIRStorageReference*spaceRef=[storageRefchild:@"images/space.jpg"];// This is equivalent to creating the full referencespaceRef=[storagereferenceForURL:@"gs://<your-firebase-storage-bucket>/images/space.jpg"];
// Parent allows us to move to the parent of a reference// imagesRef now points to 'images'letimagesRef=spaceRef.parent()// Root allows us to move all the way back to the top of our bucket// rootRef now points to the rootletrootRef=spaceRef.root()
Objective-C
// Parent allows us to move to the parent of a reference// imagesRef now points to 'images'imagesRef=[spaceRefparent];// Root allows us to move all the way back to the top of our bucket// rootRef now points to the rootFIRStorageReference*rootRef=[spaceRefroot];
// References can be chained together multiple times// earthRef points to "images/earth.jpg"letearthRef=spaceRef.parent()?.child("earth.jpg")// nilRef is nil, since the parent of root is nilletnilRef=spaceRef.root().parent()
Objective-C
// References can be chained together multiple times// earthRef points to "images/earth.jpg"FIRStorageReference*earthRef=[[spaceRefparent]child:@"earth.jpg"];// nilRef is nil, since the parent of root is nilFIRStorageReference*nilRef=[[spaceRefroot]parent];
พร็อพเพอร์ตี้อ้างอิง
คุณสามารถตรวจสอบการอ้างอิงเพื่อให้เข้าใจไฟล์ที่อ้างอิงได้ดียิ่งขึ้น
โดยใช้พร็อพเพอร์ตี้ fullPath, name และ bucket พร็อพเพอร์ตี้เหล่านี้
จะรับเส้นทางแบบเต็ม ชื่อ และที่เก็บข้อมูลของไฟล์
Swift
// Reference's path is: "images/space.jpg"// This is analogous to a file path on diskspaceRef.fullPath// Reference's name is the last segment of the full path: "space.jpg"// This is analogous to the file namespaceRef.name// Reference's bucket is the name of the storage bucket where files are storedspaceRef.bucket
Objective-C
// Reference's path is: "images/space.jpg"// This is analogous to a file path on diskspaceRef.fullPath;// Reference's name is the last segment of the full path: "space.jpg"// This is analogous to the file namespaceRef.name;// Reference's bucket is the name of the storage bucket where files are storedspaceRef.bucket;
// Points to the root referenceletstorageRef=Storage.storage().reference()// Points to "images"letimagesRef=storageRef.child("images")// Points to "images/space.jpg"// Note that you can use variables to create child valuesletfileName="space.jpg"letspaceRef=imagesRef.child(fileName)// File path is "images/space.jpg"letpath=spaceRef.fullPath// File name is "space.jpg"letname=spaceRef.name// Points to "images"letimages=spaceRef.parent()
Objective-C
// Points to the root referenceFIRStorageReference*storageRef=[[FIRStoragestorage]reference];// Points to "images"FIRStorageReference*imagesRef=[storageRefchild:@"images"];// Points to "images/space.jpg"// Note that you can use variables to create child valuesNSString*fileName=@"space.jpg";FIRStorageReference*spaceRef=[imagesRefchild:fileName];// File path is "images/space.jpg"NSString*path=spaceRef.fullPath;// File name is "space.jpg"NSString*name=spaceRef.name;// Points to "images"imagesRef=[spaceRefparent];
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-09-03 UTC"],[],[],null,["\u003cbr /\u003e\n\nYour files are stored in a\n[Cloud Storage](//cloud.google.com/storage) bucket. The\nfiles in this bucket are presented in a hierarchical structure, just like the\nfile system on your local hard disk, or the data in the Firebase Realtime Database.\nBy creating a reference to a file, your app gains access to it. These references\ncan then be used to upload or download data, get or update metadata or delete\nthe file. A reference can either point to a specific file or to a higher level\nnode in the hierarchy.\n\nIf you've used the [Firebase Realtime Database](/docs/database), these paths should\nseem very familiar to you. However, your file data is stored in\nCloud Storage, **not** in the Realtime Database.\n\nCreate a Reference\n\nCreate a reference to upload, download, or delete a file,\nor to get or update its metadata. A reference\ncan be thought of as a pointer to a file in the cloud. References are\nlightweight, so you can create as many as you need. They are also reusable for\nmultiple operations.\n\nReferences are created using the `FirebaseStorage` service and calling its\n`reference` method. \n\nSwift \n\n```swift\n// Get a reference to the storage service using the default Firebase App\nlet storage = Storage.storage()\n\n// Create a storage reference from our storage service\nlet storageRef = storage.reference()\n \n```\n\nObjective-C \n\n```objective-c\n// Get a reference to the storage service using the default Firebase App\nFIRStorage *storage = [FIRStorage storage];\n\n// Create a storage reference from our storage service\nFIRStorageReference *storageRef = [storage reference];\n \n```\n\nYou can create a reference to a location lower in the tree,\nsay `'images/space.jpg'`, by using the `child` method on an existing reference. \n\nSwift \n\n```swift\n// Create a child reference\n// imagesRef now points to \"images\"\nlet imagesRef = storageRef.child(\"images\")\n\n// Child references can also take paths delimited by '/'\n// spaceRef now points to \"images/space.jpg\"\n// imagesRef still points to \"images\"\nvar spaceRef = storageRef.child(\"images/space.jpg\")\n\n// This is equivalent to creating the full reference\nlet storagePath = \"\\(your_firebase_storage_bucket)/images/space.jpg\"\nspaceRef = storage.reference(forURL: storagePath)\n \n```\n\nObjective-C \n\n```objective-c\n// Create a child reference\n// imagesRef now points to \"images\"\nFIRStorageReference *imagesRef = [storageRef child:@\"images\"];\n\n// Child references can also take paths delimited by '/'\n// spaceRef now points to \"images/space.jpg\"\n// imagesRef still points to \"images\"\nFIRStorageReference *spaceRef = [storageRef child:@\"images/space.jpg\"];\n\n// This is equivalent to creating the full reference\nspaceRef = [storage referenceForURL:@\"gs://\u003cyour-firebase-storage-bucket\u003e/images/space.jpg\"];\n \n```\n\nNavigate with References\n\nYou can also use the `parent` and `root` methods to navigate up in our\nfile hierarchy. `parent` navigates up one level,\nwhile `root` navigates all the way to the top. \n\nSwift \n\n```swift\n// Parent allows us to move to the parent of a reference\n// imagesRef now points to 'images'\nlet imagesRef = spaceRef.parent()\n\n// Root allows us to move all the way back to the top of our bucket\n// rootRef now points to the root\nlet rootRef = spaceRef.root()\n \n```\n\nObjective-C \n\n```objective-c\n// Parent allows us to move to the parent of a reference\n// imagesRef now points to 'images'\nimagesRef = [spaceRef parent];\n\n// Root allows us to move all the way back to the top of our bucket\n// rootRef now points to the root\nFIRStorageReference *rootRef = [spaceRef root];\n \n```\n\n`child`, `parent`, and `root` can be chained together multiple times, as\neach returns a reference. The exception is the `parent` of `root`, which\nis `nil`. \n\nSwift \n\n```swift\n// References can be chained together multiple times\n// earthRef points to \"images/earth.jpg\"\nlet earthRef = spaceRef.parent()?.child(\"earth.jpg\")\n\n// nilRef is nil, since the parent of root is nil\nlet nilRef = spaceRef.root().parent()\n \n```\n\nObjective-C \n\n```objective-c\n// References can be chained together multiple times\n// earthRef points to \"images/earth.jpg\"\nFIRStorageReference *earthRef = [[spaceRef parent] child:@\"earth.jpg\"];\n\n// nilRef is nil, since the parent of root is nil\nFIRStorageReference *nilRef = [[spaceRef root] parent];\n \n```\n\nReference Properties\n\nYou can inspect references to better understand the files they point to\nusing the `fullPath`, `name`, and `bucket` properties. These properties\nget the file's full path, name, and bucket. \n\nSwift \n\n```swift\n// Reference's path is: \"images/space.jpg\"\n// This is analogous to a file path on disk\nspaceRef.fullPath\n\n// Reference's name is the last segment of the full path: \"space.jpg\"\n// This is analogous to the file name\nspaceRef.name\n\n// Reference's bucket is the name of the storage bucket where files are stored\nspaceRef.bucket\n \n```\n\nObjective-C \n\n```objective-c\n// Reference's path is: \"images/space.jpg\"\n// This is analogous to a file path on disk\nspaceRef.fullPath;\n\n// Reference's name is the last segment of the full path: \"space.jpg\"\n// This is analogous to the file name\nspaceRef.name;\n\n// Reference's bucket is the name of the storage bucket where files are stored\nspaceRef.bucket;\n \n```\n\nLimitations on References\n\nReference paths and names can contain any sequence of valid Unicode characters,\nbut certain restrictions are imposed including:\n\n1. Total length of reference.fullPath must be between 1 and 1024 bytes when UTF-8 encoded.\n2. No Carriage Return or Line Feed characters.\n3. Avoid using `#`, `[`, `]`, `*`, or `?`, as these do not work well with other tools such as the [Firebase Realtime Database](/docs/database) or [gsutil](https://cloud.google.com/storage/docs/gsutil).\n\nFull Example \n\nSwift \n\n```swift\n// Points to the root reference\nlet storageRef = Storage.storage().reference()\n\n// Points to \"images\"\nlet imagesRef = storageRef.child(\"images\")\n\n// Points to \"images/space.jpg\"\n// Note that you can use variables to create child values\nlet fileName = \"space.jpg\"\nlet spaceRef = imagesRef.child(fileName)\n\n// File path is \"images/space.jpg\"\nlet path = spaceRef.fullPath\n\n// File name is \"space.jpg\"\nlet name = spaceRef.name\n\n// Points to \"images\"\nlet images = spaceRef.parent()\n \n```\n\nObjective-C \n\n```objective-c\n// Points to the root reference\nFIRStorageReference *storageRef = [[FIRStorage storage] reference];\n\n// Points to \"images\"\nFIRStorageReference *imagesRef = [storageRef child:@\"images\"];\n\n// Points to \"images/space.jpg\"\n// Note that you can use variables to create child values\nNSString *fileName = @\"space.jpg\";\nFIRStorageReference *spaceRef = [imagesRef child:fileName];\n\n// File path is \"images/space.jpg\"\nNSString *path = spaceRef.fullPath;\n\n// File name is \"space.jpg\"\nNSString *name = spaceRef.name;\n\n// Points to \"images\"\nimagesRef = [spaceRef parent];\n \n```\n\nNext, let's learn how to\n[upload files](/docs/storage/ios/upload-files) to\nCloud Storage."]]