Code Monkey home page Code Monkey logo

storage-js's Introduction

storage-js

JS Client library to interact with Supabase Storage.

Quick Start Guide

Installing the module

npm install @supabase/storage-js

Connecting to the storage backend

import { StorageClient } from '@supabase/storage-js'

const STORAGE_URL = 'https://<project_ref>.supabase.co/storage/v1'
const SERVICE_KEY = '<service_role>' //! service key, not anon key

const storageClient = new StorageClient(STORAGE_URL, {
  apikey: SERVICE_KEY,
  Authorization: `Bearer ${SERVICE_KEY}`,
})

Handling resources

Handling Storage Buckets

  • Create a new Storage bucket:

    const { data, error } = await storageClient.createBucket(
      'test_bucket', // Bucket name (must be unique)
      { public: false } // Bucket options
    )
  • Retrieve the details of an existing Storage bucket:

    const { data, error } = await storageClient.getBucket('test_bucket')
  • Update a new Storage bucket:

    const { data, error } = await storageClient.updateBucket(
      'test_bucket', // Bucket name
      { public: false } // Bucket options
    )
  • Remove all objects inside a single bucket:

    const { data, error } = await storageClient.emptyBucket('test_bucket')
  • Delete an existing bucket (a bucket can't be deleted with existing objects inside it):

    const { data, error } = await storageClient.deleteBucket('test_bucket')
  • Retrieve the details of all Storage buckets within an existing project:

    const { data, error } = await storageClient.listBuckets()

Handling Files

  • Upload a file to an existing bucket:

    const fileBody = ... // load your file here
    
    const { data, error } = await storageClient.from('bucket').upload('path/to/file', fileBody)

    Note:
    The path in data.Key is prefixed by the bucket ID and is not the value which should be passed to the download method in order to fetch the file.
    To fetch the file via the download method, use data.path and data.bucketId as follows:

    const { data, error } = await storageClient.from('bucket').upload('/folder/file.txt', fileBody)
    // check for errors
    const { data2, error2 } = await storageClient.from(data.bucketId).download(data.path)

    Note: The upload method also accepts a map of optional parameters. For a complete list see the Supabase API reference.

  • Download a file from an exisiting bucket:

    const { data, error } = await storageClient.from('bucket').download('path/to/file')
  • List all the files within a bucket:

    const { data, error } = await storageClient.from('bucket').list('folder')

    Note: The list method also accepts a map of optional parameters. For a complete list see the Supabase API reference.

  • Replace an existing file at the specified path with a new one:

    const fileBody = ... // load your file here
    
    const { data, error } = await storageClient
      .from('bucket')
      .update('path/to/file', fileBody)

    Note: The upload method also accepts a map of optional parameters. For a complete list see the Supabase API reference.

  • Move an existing file:

    const { data, error } = await storageClient
      .from('bucket')
      .move('old/path/to/file', 'new/path/to/file')
  • Delete files within the same bucket:

    const { data, error } = await storageClient.from('bucket').remove(['path/to/file'])
  • Create signed URL to download file without requiring permissions:

    const expireIn = 60
    
    const { data, error } = await storageClient
      .from('bucket')
      .createSignedUrl('path/to/file', expireIn)
  • Retrieve URLs for assets in public buckets:

    const { data, error } = await storageClient.from('public-bucket').getPublicUrl('path/to/file')

Sponsors

We are building the features of Firebase using enterprise-grade, open source products. We support existing communities wherever possible, and if the products don’t exist we build them and open source them ourselves. Thanks to these sponsors who are making the OSS ecosystem better for everyone.

New Sponsor

storage-js's People

Contributors

inian avatar phamhieu avatar soedirgo avatar fenos avatar dshukertjr avatar dependabot[bot] avatar alaister avatar thebengeu avatar kiwicopple avatar awalias avatar i-pip avatar rexmondo avatar haydn avatar bombillazo avatar jacobwgillespie avatar jonathanpicques avatar junedkhatri31 avatar kangmingtay avatar kewinzaq1 avatar ankitjena avatar simonsayssa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.