Cloud Storage for Firebase lưu trữ dữ liệu của bạn trong một bộ chứa Google Cloud Storage – một giải pháp lưu trữ đối tượng ở quy mô exabyte với khả năng hoạt động cao và khả năng dự phòng toàn cầu. SDK quản trị Firebase cho phép bạn truy cập trực tiếp vào các bộ chứa Cloud Storage từ các môi trường đặc quyền. Sau đó, bạn có thể sử dụng API Google Cloud Storage để thao tác với các đối tượng được lưu trữ trong các bộ chứa.
Admin SDK cũng cho phép bạn tạo URL có thể chia sẻ để người dùng có thể tải các đối tượng trong bộ chứa xuống.
Sử dụng bộ chứa mặc định
Bạn có thể chỉ định tên bộ chứa mặc định khi khởi chạy SDK dành cho quản trị viên. Sau đó, bạn có thể truy xuất tệp tham chiếu đã xác thực đến bộ chứa này.
Tên bộ chứa không được chứa gs://
hoặc bất kỳ tiền tố giao thức nào khác.
Ví dụ: nếu URL bộ chứa hiển thị trong bảng điều khiển Firebase là gs://PROJECT_ID.firebasestorage.app
, hãy truyền chuỗi PROJECT_ID.firebasestorage.app
đến SDK quản trị.
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 http://googlecloudplatform.github.io/google-cloud-java/latest/apidocs/com/google/cloud/storage/Bucket.html
// 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.
Tiến hành
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.
Bạn có thể sử dụng các tệp tham chiếu bộ chứa do SDK quản trị trả về cùng với thư viện ứng dụng Google Cloud Storage chính thức để tải lên, tải xuống và sửa đổi nội dung trong các bộ chứa liên kết với dự án Firebase. Xin lưu ý rằng bạn không cần xác thực thư viện Google Cloud Storage khi sử dụng SDK Quản trị Firebase. Các tệp tham chiếu bộ chứa do SDK quản trị trả về đã được xác thực bằng thông tin xác thực dùng để khởi chạy ứng dụng Firebase.
Sử dụng bộ chứa tuỳ chỉnh
Nếu muốn sử dụng một bộ chứa Cloud Storage khác với bộ chứa mặc định được mô tả trước đó trong hướng dẫn này hoặc sử dụng nhiều bộ chứa Cloud Storage trong một ứng dụng, bạn có thể truy xuất tham chiếu đến một bộ chứa tuỳ chỉnh:
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')
Tiến hành
bucket, err := client.Bucket("my-custom-bucket")
Sử dụng ứng dụng Firebase tuỳ chỉnh
Nếu đang xây dựng một ứng dụng phức tạp hơn có tương tác với nhiều ứng dụng Firebase, thì bạn có thể truy cập vào các nhóm Cloud Storage liên kết với một ứng dụng Firebase cụ thể như sau:
Node.js
const bucket = getStorage(customApp).bucket();
Java
Bucket bucket = StorageClient.getInstance(customApp).bucket();
Python
bucket = storage.bucket(app=custom_app)
Tiến hành
otherClient, err := otherApp.Storage(context.Background())
bucket, err := otherClient.Bucket("other-app-bucket")
Lấy URL tải xuống có thể chia sẻ
Bạn có thể sử dụng Admin SDK để tạo một URL tải xuống không hết hạn cho các tệp được lưu trữ trong bộ chứa. Bất kỳ ai có URL này đều có thể truy cập vĩnh viễn vào tệp.
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 thư viện ứng dụng
SDK của Firebase dành cho quản trị viên phụ thuộc vào thư viện ứng dụng Google Cloud Storage để cung cấp quyền truy cập Cloud Storage. Các tệp tham chiếu bộ chứa do SDK quản trị trả về là các đối tượng được xác định trong các thư viện này. Hãy tham khảo tài liệu và tài liệu tham khảo API của thư viện ứng dụng Google Cloud Storage để tìm hiểu cách sử dụng các tệp tham chiếu bộ chứa được trả về trong các trường hợp sử dụng như tải lên và tải xuống.