Storage API trong Supabase: Upload và Quản lý File Hiệu Quả

25/02/2026 P T P Chung 7 phút đọc 0 bình luận

Mở đầu

Trong quá trình xây dựng ứng dụng web hoặc di động, việc lưu trữ và quản lý file thường là một thách thức không nhỏ. Các giải pháp truyền thống như Amazon S3 hay Google Cloud Storage mạnh mẽ nhưng đòi hỏi kiến thức sâu về hạ tầng và chi phí triển khai không hề nhỏ. Supabase mang đến một giải pháp đơn giản hơn với Storage API, cho phép bạn upload, tải về và quản lý file một cách trực quan ngay trong hệ sinh thái Supabase.

Bài viết này sẽ hướng dẫn chi tiết cách sử dụng Storage API, từ cấu hình ban đầu cho đến các thao tác quản lý file, giúp bạn nhanh chóng tích hợp tính năng lưu trữ file vào dự án của mình.

Storage API là gì và vì sao nên dùng

Storage API của Supabase là một dịch vụ lưu trữ file được tích hợp sẵn trong nền tảng Supabase. Nó hoạt động dựa trên hệ thống lưu trữ đối tượng (object storage) và được bảo mật bằng Row Level Security (RLS) của Supabase, giúp bạn kiểm soát ai có thể truy cập file nào.

Lợi ích chính bao gồm:

- Đơn giản hóa quá trình cấu hình: Không cần phải tự thiết lập bucket hay quản lý hạ tầng. - Bảo mật tích hợp: Mọi quyền truy cập đều được kiểm soát bởi chính sách RLS. - Tích hợp mượt mà: Dễ dàng kết nối với Database và Authentication của Supabase. - Chi phí hợp lý: Gói miễn phí đủ dùng cho dự án nhỏ và vừa.

Cấu hình Storage API

Bước 1: Tạo bucket

Để bắt đầu, bạn cần tạo một bucket (thư mục chứa file) trong dashboard của Supabase:

1. Truy cập phần Storage trong dashboard. 2. Nhấn New bucket, đặt tên và chọn region phù hợp. 3. Bucket sẽ được tạo với đường dẫn dạng bucket-name/.

Bước 2: Thiết lập Row Level Security

Storage API sử dụng chính sách RLS để bảo mật. Bạn cần tạo các policy để định nghĩa ai được phép upload, download hay xóa file.

Ví dụ policy cho phép user authenticated upload file:

-- Cho phép user authenticated upload
CREATE POLICY "Users can upload own files" ON storage.objects
FOR INSERT WITH CHECK (auth.uid() = bucket_id);

-- Cho phép user authenticated download file của mình CREATE POLICY "Users can download own files" ON storage.objects FOR SELECT USING (auth.uid() = bucket_id);

Bạn có thể tùy chỉnh policy theo nhu cầu ứng dụng.

Upload file với Storage API

Sử dụng Supabase JS

Supabase cung cấp client library giúp upload file đơn giản:

Quảng cáo

300x250 In-Content Advertisement

import { createClient } from '@supabase/supabase-js'

const supabase = createClient('https://your-project.supabase.co', 'your-anon-key')

// Upload file const file = document.querySelector('input[type="file"]').files[0] const fileName = ${Math.random()}-${file.name}

const { data, error } = await supabase.storage .from('bucket-name') .upload(fileName, file)

if (error) { console.error('Upload failed:', error) } else { console.log('File uploaded:', data) }

Upload với custom metadata

Bạn có thể gắn thêm metadata cho file:

const { data, error } = await supabase.storage
  .from('bucket-name')
  .upload(fileName, file, {
    contentType: file.type,
    metadata: { description: 'Hình ảnh sản phẩm' }
  })

Quản lý file

Liệt kê danh sách file

const { data: files, error } = await supabase.storage
  .from('bucket-name')
  .list()

files.forEach(file => { console.log(file.name, file.created_at) })

Tải file về

const { data: url, error } = await supabase.storage
  .from('bucket-name')
  .getPublicUrl(fileName)

// Hoặc tạo signed URL (có thời hạn) const { data: signedUrl, error } = await supabase.storage .from('bucket-name') .getSignedUrl(fileName, { expires: '24 hours' })

Xóa file

const { error } = await supabase.storage
  .from('bucket-name')
  .remove([fileName])

Mẹo thực tế khi dùng Storage API

- Đặt tên file có prefix: Dùng user_${uid}/avatar.png để dễ quản lý theo user. - Sử dụng signed URL cho file private: Tránh public URL khi file nhạy cảm. - Tối ưu kích thước trước khi upload: Giảm dung lượng, tăng tốc độ. - Kiểm tra quota: Gói miễn phí giới hạn dung lượng, theo dõi dashboard thường xuyên.

Kết luận

Storage API của Supabase cung cấp một giải pháp lưu trữ file mạnh mẽ, bảo mật và dễ tích hợp. Với Row Level Security tích hợp sẵn, bạn có thể kiểm soát quyền truy cập một cách tinh tế. Việc upload và quản lý file trở nên đơn giản hơn bao giờ hết, giúp bạn tập trung vào phát triển tính năng thay vì lo lắng về hạ tầng.

Dù bạn đang xây dựng ứng dụng quản lý tài liệu, nền tảng thương mại điện tử hay mạng xã hội, Storage API đều là một lựa chọn đáng cân nhắc. Hãy thử nghiệm và trải nghiệm sự tiện lợi mà nó mang lại cho dự án của bạn.

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!