This library is a Golang client for the Supabase Storage API. It's a collection of helper functions that help you manage your buckets through the API.
go get github.com/supabase-community/storage-gopackage main
import (
"fmt"
"log"
"os"
storage_go "github.com/supabase-community/storage-go"
)
func main() {
storageClient := storage_go.NewClient("https://<project-reference-id>.supabase.co/storage/v1", "<project-secret-api-key>", nil)
}- Create a new Storage bucket:
result, err := storageClient.CreateBucket("bucket-id", storage_go.BucketOptions{
Public: true,
})- Retrieve the details of an existing Storage bucket:
result, err := storageClient.GetBucket("bucket-id")- Update a new Storage bucket:
result, err := storageClient.UpdateBucket("bucket-id", storage_go.BucketOptions{
Public: true,
})- Remove all objects inside a single bucket:
result, err := storageClient.EmptyBucket("bucket-id")- Delete an existing bucket (a bucket can't be deleted with existing objects inside it):
result, err := storageClient.DeleteBucket("bucket-id")- Retrieve the details of all Storage buckets within an existing project:
result, err := storageClient.ListBuckets("bucket-id") fileBody := ... // load your file here
result, err := storageClient.UploadFile("test", "test.txt", fileBody)Note: The
uploadmethod also accepts a map of optional parameters.
- Download a file from an exisiting bucket:
result, err := storageClient.DownloadFile("bucket-id", "test.txt")- List all the files within a bucket:
result, err := storageClient.ListFiles("bucket-id", "", storage_go.FileSearchOptions{
Limit: 10,
Offset: 0,
SortByOptions: storage_go.SortBy{
Column: "",
Order: "",
},
})Note: The
listmethod also accepts a map of optional parameters.
- Replace an existing file at the specified path with a new one:
fileBody := ... // load your file here
result, err := storageClient.UpdateFile("test", "test.txt", file)- Move an existing file:
result, err := storageClient.MoveFile("test", "test.txt", "random/test.txt")- Delete files within the same bucket:
result, err := storageClient.RemoveFile("test", []string{"book.pdf"})- Create signed URL to download file without requiring permissions:
const expireIn = 60
result, err := storageClient.CreateSignedUrl("test", "test.mp4", expireIn)- Retrieve URLs for assets in public buckets:
result, err := storageClient.GetPublicUrl("test", "book.pdf")- Create an signed URL and upload to signed URL:
fileBody := ... // load your file here
resp, err := storageClient.CreateSignedUploadUrl("test", "test.txt")
res, err := storageClient.UploadToSignedUrl(resp.Url, file)