Lưu trữ file và hình ảnh hiệu quả với Supabase Storage

22/03/2026 P T P Chung 5 phút đọc 0 bình luận
Supabase Storage là dịch vụ lưu trữ tệp tin và hình ảnh được tích hợp sẵn trong nền tảng Supabase, cho phép bạn quản lý tài nguyên tĩnh một cách dễ dàng và an toàn. Không cần phải thiết lập hệ thống lưu trữ riêng biệt, Storage cung cấp giao diện quản lý trực quan và API mạnh mẽ để upload, download, xóa và phân quyền truy cập file.

Cách hoạt động của Supabase Storage

Storage dựa trên cơ sở dữ liệu Postgres và hệ thống lưu trữ đối tượng. Mỗi "bucket" là một thư mục ảo chứa tệp tin, có thể được tổ chức theo cấp bậc. Mọi thao tác đều được bảo mật thông qua Row Level Security (RLS), đảm bảo chỉ người dùng được cấp quyền mới có thể truy cập hoặc thao tác với file.

Các tính năng nổi bật

Quản lý bucket và folder

Bạn có thể tạo nhiều bucket khác nhau để phân loại tài nguyên, ví dụ: avatars, documents, images. Bên trong mỗi bucket, folder giúp tổ chức file theo danh mục hoặc người dùng.

Upload file

Storage hỗ trợ upload file trực tiếp từ client, kèm theo metadata như tên file, kích thước, loại MIME. Bạn có thể upload nhiều file cùng lúc và kiểm soát kích thước tối đa.

Tải xuống và truy cập

Mỗi file được gán URL duy nhất, có thể public hoặc private. URL private yêu cầu token JWT hợp lệ để truy cập, giúp bảo mật dữ liệu nhạy cảm.

Xóa và di chuyển

Bạn có thể xóa file hoặc folder rỗng. Việc di chuyển file giữa các folder cũng đơn giản thông qua API.

Quyền truy cập (ACL)

Storage sử dụng chính sách Row Level Security của Postgres. Bạn định nghĩa policy để kiểm soát ai có thể upload, download, xóa file. Ví dụ: chỉ user đã đăng nhập mới được upload avatar, hoặc chỉ chủ sở hữu mới được xóa file của mình.

Tối ưu hình ảnh

Storage tích hợp sẵn các tham số query string để resize, crop, thay đổi chất lượng hình ảnh trên bay. Ví dụ:

- ?width=200 - thay đổi chiều rộng - ?height=300 - thay đổi chiều cao - ?format=webp - chuyển định dạng - ?quality=80 - điều chỉnh chất lượng

Điều này giúp giảm dung lượng và tăng tốc độ tải trang.

Quảng cáo

300x250 In-Content Advertisement

Ví dụ thực tế

Upload avatar cho user

const { data, error } = await supabase.storage
  .from('avatars')
  .upload('user123/profile.jpg', file, {
    contentType: 'image/jpeg',
    upsert: false
  })

Tải ảnh với resize

const url = ${baseUrl}/avatars/user123/profile.jpg?width=200&height=200&format=webp

Kiểm tra quyền truy cập

-- Policy cho phép user upload avatar của chính mình
CREATE POLICY "Users can upload own avatars" ON storage.objects
  FOR INSERT WITH CHECK (
    bucket_id = 'avatars' AND
    auth.role() = 'authenticated' AND
    storage.foldername('avatars', id) = auth.uid()
  );

Lưu ý khi sử dụng

- Giới hạn kích thước file upload mặc định là 50MB, có thể điều chỉnh trong config. - Bucket không thể xóa nếu chứa file hoặc folder con. - Nên backup dữ liệu quan trọng vì Storage không tự động backup. - Cân nhắc CDN nếu traffic cao để giảm latency.

Kết luận

Supabase Storage cung cấp giải pháp toàn diện cho việc lưu trữ file và hình ảnh, từ quản lý bucket, upload/download an toàn, resize hình ảnh tự động, đến kiểm soát quyền truy cập chi tiết. Với tích hợp sẵn trong Supabase, bạn tiết kiệm thời gian thiết lập và có hệ thống mở rộng tốt cho ứng dụng.

Quảng cáo

728x90 Bottom Advertisement

Thay thế bằng mã Google AdSense

Chia sẻ bài viết

Facebook Twitter

Bình luận

Chia sẻ ý kiến của bạn về bài viết này

Viết bình luận

Bình luận của bạn sẽ được kiểm duyệt trước khi hiển thị

Chưa có bình luận nào

Hãy là người đầu tiên bình luận về bài viết này!