يخزِّن Cloud Storage for Firebase بياناتك في حاوية Google Cloud Storage، وهو حل لتخزين الكائنات على نطاق إكسابايت يتسم بالتوفّر العالي والنسخ الاحتياطي العالمي. تتيح لك حزمة Firebase Admin SDK الوصول مباشرةً إلى Cloud Storage حاوياتك من بيئات مميزة. بعد ذلك، يمكنك استخدام Google Cloud Storage واجهات برمجة التطبيقات لمعالجة الكائنات المخزَّنة في الحاويات.
تتيح لك Admin SDK أيضًا إنشاء عناوين URL قابلة للمشاركة ليتمكّن المستخدمون من تنزيل الكائنات في حاوياتك.
تأكَّد من أنّ مشروعك على Firebase يستخدم خطة التسعير Blaze التي تفرض الدفع حسب الاستخدام، وهي شرط لاستخدام Cloud Storage for Firebase. إذا كنت مستخدِمًا جديدًا لمنصّة Firebase و Google Cloud، تحقَّق مما إذا كنت مؤهلاً للحصول على رصيد تجريبي مجاني بقيمة 300 دولار أمريكي.
استخدام حاوية تلقائية
يمكنك تحديد اسم حاوية تلقائي عند تهيئة حزمة مدير SDK. بعد ذلك، يمكنك استرداد مرجع مصادَق عليه لهذه الحاوية.
يجب ألا يحتوي اسم الحاوية على gs:// أو أي بادئات بروتوكول أخرى.
على سبيل المثال، إذا كان عنوان URL للحاوية المعروض في الـ
Firebase console
هو gs://PROJECT_ID.firebasestorage.app، مرِّر السلسلة
PROJECT_ID.firebasestorage.app إلى حزمة مدير 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. تكون مراجع الحاويات التي تعرضها حزمة مدير SDK مصادَقة مسبقًا باستخدام بيانات الاعتماد المستخدَمة لتهيئة تطبيق Firebase.
استخدام حاويات مخصّصة
إذا أردت استخدام حاوية Cloud Storage غير الحاوية التلقائية الموضّحة سابقًا في هذا الدليل، أو استخدام عدة حاويات Cloud Storage في تطبيق واحد، يمكنك استرداد مرجع إلى حاوية مخصّصة:
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. مراجع الحاويات التي تعرضها حزمة مدير SDK هي كائنات محدّدة في هذه المكتبات. يمكنك الرجوع إلى مستندات ومراجع واجهات برمجة التطبيقات لمكتبات عملاء Google Cloud Storage لمعرفة كيفية استخدام مراجع الحاويات المعروضة في حالات الاستخدام، مثل تحميل الملفات وتنزيلها.