Cloud Storage for Firebase lưu trữ dữ liệu của bạn trong một Google Cloud Storage vùng chứa – 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à tính dư thừa trên toàn cầu. SDK của Firebase dành cho quản trị viên cho phép bạn truy cập trực tiếp vào các Cloud Storage bộ chứa từ các môi trường có đặc quyền. Sau đó, bạn có thể sử dụng Google Cloud Storage API để thao tác với các đối tượng được lưu trữ trong các vùng 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 xuống trong vùng chứa của bạn.
Ngoài ra, hãy đảm bảo dự án Firebase của bạn sử dụng gói giá Blaze trả tiền theo mức sử dụng. Đây là một yêu cầu bắt đầu có hiệu lực từ tháng 10 năm 2024 (xem Câu hỏi thường gặp). Nếu bạn mới sử dụng Firebase và Google Cloud, hãy kiểm tra xem bạn có đủ điều kiện nhận khoản tín dụng trị giá 300 USD hay không.
Sử dụng vùng chứa mặc định
Bạn có thể chỉ định tên vùng chứa mặc định khi khởi chạy Admin SDK. Sau đó, bạn có thể truy xuất một tham chiếu đã xác thực đến vùng chứa này.
Tên vùng 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 vùng chứa hiển thị trong bảng điều khiển là gs://PROJECT_ID.firebasestorage.app, hãy truyền chuỗi PROJECT_ID.firebasestorage.app đến Admin SDK.Firebase
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.
Bắt đầu
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 tham chiếu vùng chứa do Admin SDK trả về cùng với các Google Cloud Storage thư viện ứng dụng để tải lên, tải xuống và sửa đổi nội dung trong các vùng chứa được liên kết với dự án Firebase của bạn. Xin lưu ý rằng bạn không cần phải xác thực Google Cloud Storage các thư viện khi sử dụng SDK của Firebase dành cho quản trị viên. Các tham chiếu vùng chứa do Admin SDK trả về đã được xác thực bằng thông tin đăng nhập dùng để khởi chạy ứng dụng Firebase.
Sử dụng vùng chứa tuỳ chỉnh
Nếu muốn sử dụng một Cloud Storage vùng chứa khác với vùng chứa mặc định được mô tả trước đó trong hướng dẫn này hoặc sử dụng nhiều vùng chứa Cloud Storage trong một ứng dụng, bạn có thể truy xuất một tham chiếu đến vùng 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')
Bắt đầu
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 tương tác với nhiều ứng dụng Firebase, bạn có thể truy cập vào các vùng chứa Cloud Storage được 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)
Bắt đầu
otherClient, err := otherApp.Storage(context.Background())
bucket, err := otherClient.Bucket("other-app-bucket")
Nhận URL tải xuống có thể chia sẻ
Bạn có thể sử dụng Admin SDK để tạo URL tải xuống không hết hạn cho các tệp được lưu trữ trong vùng chứa của mình. 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);
Thư viện ứng dụng Google Cloud Storage
Firebase Admin SDK phụ thuộc vào các Google Cloud Storage thư viện ứng dụng để cung cấp Cloud Storage quyền truy cập. Các tham chiếu vùng chứa do Admin SDK 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 các thư viện ứng dụng Google Cloud Storage để tìm hiểu cách sử dụng các tham chiếu vùng chứa được trả về trong các trường hợp sử dụng như tải tệp lên và tải tệp xuống.