Cloud Storage for Firebase จัดเก็บข้อมูลของคุณในที่เก็บข้อมูล Google Cloud Storage ซึ่งเป็นโซลูชันพื้นที่เก็บข้อมูลออบเจ็กต์ขนาดเอกซะไบต์ที่มีความพร้อมใช้งานสูงและความซ้ำซ้อนทั่วโลก Firebase Admin SDK ช่วยให้คุณเข้าถึงที่เก็บข้อมูล Cloud Storage ได้โดยตรงจากสภาพแวดล้อมที่มีสิทธิ์ จากนั้นคุณจะใช้ Google Cloud Storage API เพื่อจัดการออบเจ็กต์ที่จัดเก็บไว้ในที่เก็บข้อมูลได้
นอกจากนี้ Admin SDK ยังช่วยให้คุณสร้าง URL ที่แชร์ได้เพื่อให้ผู้ใช้ดาวน์โหลดออบเจ็กต์ในที่เก็บข้อมูลได้
ตรวจสอบว่าโปรเจ็กต์ Firebase อยู่ในแพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้ ซึ่งเป็นข้อกำหนดในการใช้ Cloud Storage for Firebase หากเพิ่งเคยใช้ Firebase และ Google Cloud โปรดตรวจสอบว่าคุณมีสิทธิ์รับ เครดิตช่วงทดลองใช้ฟรี$300 หรือไม่
ใช้ Bucket เริ่มต้น
คุณระบุชื่อ Bucket เริ่มต้นได้เมื่อเริ่มต้น Admin SDK จากนั้นคุณ จะดึงข้อมูลอ้างอิงที่ตรวจสอบสิทธิ์แล้วไปยังที่เก็บข้อมูลนี้ได้
ชื่อที่เก็บข้อมูลต้องไม่มี gs:// หรือคำนำหน้าโปรโตคอลอื่นๆ
เช่น หาก URL ของที่เก็บข้อมูลที่แสดงในคอนโซล
Firebase
คือ gs://PROJECT_ID.firebasestorage.app ให้ส่งสตริง
PROJECT_ID.firebasestorage.app ไปยัง Admin SDK
Node.js
const { initializeApp, cert } = require('firebase-admin/app');
const { getStorage } = require('firebase-admin/storage');
const serviceAccount = require('./path/to/serviceAccountKey.json');
initializeApp({
credential: cert(serviceAccount),
storageBucket: '<BUCKET_NAME>.appspot.com'
});
const bucket = getStorage().bucket();
// 'bucket' is an object defined in the @google-cloud/storage library.
// See https://googlecloudplatform.github.io/google-cloud-node/#/docs/storage/latest/storage/bucket
// for more details.
Java
FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setStorageBucket("<BUCKET_NAME>.appspot.com")
.build();
FirebaseApp.initializeApp(options);
Bucket bucket = StorageClient.getInstance().bucket();
// 'bucket' is an object defined in the google-cloud-storage Java library.
// See https://cloud.google.com/java/docs/reference/google-cloud-storage/latest/com.google.cloud.storage.Bucket
// for more details.
Python
import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage
cred = credentials.Certificate('path/to/serviceAccountKey.json')
firebase_admin.initialize_app(cred, {
'storageBucket': 'PROJECT_ID.firebasestorage.app'
})
bucket = storage.bucket()
# 'bucket' is an object defined in the google-cloud-storage Python library.
# See https://googlecloudplatform.github.io/google-cloud-python/latest/storage/buckets.html
# for more details.
Go
import (
"context"
"log"
firebase "firebase.google.com/go/v4"
"firebase.google.com/go/v4/auth"
"google.golang.org/api/option"
)
config := &firebase.Config{
StorageBucket: "<BUCKET_NAME>.appspot.com",
}
opt := option.WithCredentialsFile("path/to/serviceAccountKey.json")
app, err := firebase.NewApp(context.Background(), config, opt)
if err != nil {
log.Fatalln(err)
}
client, err := app.Storage(context.Background())
if err != nil {
log.Fatalln(err)
}
bucket, err := client.DefaultBucket()
if err != nil {
log.Fatalln(err)
}
// 'bucket' is an object defined in the cloud.google.com/go/storage package.
// See https://godoc.org/cloud.google.com/go/storage#BucketHandle
// for more details.
คุณสามารถใช้การอ้างอิงที่เก็บข้อมูลที่ Admin SDK ส่งคืนร่วมกับ Google Cloud Storageไลบรารีไคลเอ็นต์ อย่างเป็นทางการ เพื่ออัปโหลด ดาวน์โหลด และแก้ไขเนื้อหาในที่เก็บข้อมูลที่เชื่อมโยงกับโปรเจ็กต์ Firebase โปรดทราบว่าคุณไม่จำเป็นต้องตรวจสอบสิทธิ์ Google Cloud Storageไลบรารีเมื่อใช้ Firebase Admin SDK ระบบจะตรวจสอบสิทธิ์การอ้างอิง Bucket ที่ Admin SDK แสดงผลแล้วด้วย ข้อมูลเข้าสู่ระบบที่ใช้ในการเริ่มต้นแอป Firebase
ใช้ที่เก็บข้อมูลที่กำหนดเอง
หากต้องการใช้ Bucket Cloud Storage อื่นที่ไม่ใช่ Bucket เริ่มต้น ที่อธิบายไว้ก่อนหน้านี้ในคู่มือนี้ หรือใช้ Bucket Cloud Storage หลายรายการใน แอปเดียว คุณสามารถดึงข้อมูลอ้างอิงไปยัง Bucket ที่กำหนดเองได้โดยทำดังนี้
Node.js
const bucket = getStorage().bucket('my-custom-bucket');
Java
Bucket bucket = StorageClient.getInstance().bucket("my-custom-bucket");
Python
bucket = storage.bucket('my-custom-bucket')
Go
bucket, err := client.Bucket("my-custom-bucket")
ใช้แอป Firebase ที่กำหนดเอง
หากคุณกำลังสร้างแอปพลิเคชันที่ซับซ้อนมากขึ้นซึ่งโต้ตอบกับแอป Firebase หลายแอป คุณสามารถเข้าถึงที่เก็บข้อมูล Cloud Storage ที่เชื่อมโยงกับแอป Firebase ที่เฉพาะเจาะจงได้โดยทำดังนี้
Node.js
const bucket = getStorage(customApp).bucket();
Java
Bucket bucket = StorageClient.getInstance(customApp).bucket();
Python
bucket = storage.bucket(app=custom_app)
Go
otherClient, err := otherApp.Storage(context.Background())
bucket, err := otherClient.Bucket("other-app-bucket")
รับ URL สำหรับดาวน์โหลดที่แชร์ได้
คุณใช้ Admin SDK เพื่อสร้าง URL สำหรับดาวน์โหลดที่ไม่หมดอายุสำหรับ ไฟล์ที่จัดเก็บไว้ในที่เก็บข้อมูลได้ ทุกคนที่มี URL นี้จะเข้าถึงไฟล์ได้ อย่างถาวร
Node.js
const { getStorage, getDownloadURL } = require('firebase-admin/storage');
const fileRef = getStorage().bucket('my-bucket').file('my-file');
const downloadURL= await getDownloadURL(fileRef);
Google Cloud Storage ไลบรารีของไคลเอ็นต์
Firebase Admin SDK ขึ้นอยู่กับGoogle Cloud Storageไลบรารีไคลเอ็นต์ เพื่อมอบCloud Storageสิทธิ์เข้าถึง การอ้างอิง Bucket ที่ Admin SDK ส่งคืนคือออบเจ็กต์ที่กำหนดไว้ในไลบรารีเหล่านี้ โปรดอ่านเอกสารประกอบและข้อมูลอ้างอิง API ของGoogle Cloud Storageคลังไคลเอ็นต์เพื่อดูวิธีใช้ข้อมูลอ้างอิงของที่เก็บข้อมูลที่ส่งคืนในกรณีการใช้งาน เช่น การอัปโหลดและการดาวน์โหลดไฟล์