supabase / supabase-js

An isomorphic Javascript client for Supabase. Query your Supabase database, subscribe to realtime events, upload and download files, browse typescript examples, invoke postgres functions via rpc, invoke supabase edge functions, query pgvector.
https://supabase.com
MIT License
3.25k stars 270 forks source link

fetch file from other cloud store. #647

Open falstack opened 1 year ago

falstack commented 1 year ago

Feature request

When I use OAuth to get users' avatars on social platforms, I need to store them in my storeage, otherwise I can't access them (next/image restrictions or users change new avatars)

Describe the solution you'd like

supabase.fetch('https://useravatar.png').to({
   bucket: 'my-bucket',
   path: 'filepath'
})

Describe alternatives you've considered

Use Nodejs to download remote files to local, and then upload them using supabase

Additional context

  1. supabase can provide syntax encapsulation to download remote files to local
  2. When calling the remote download, supabase does not need to download the remote file to the local, but calls the cloud function of supabase to push the file to the user's bucket
soedirgo commented 1 year ago

Hmm, I think this is a bit out of scope for the client library. You can try fetching the image and storing them with from().upload(), e.g.

const res = await fetch("https://example.com/avatar.png")
const { data, error } = await supabase.from('bucket').upload('file/path.png', await res.blob())

cc @fenos

falstack commented 1 year ago

@soedirgo local fetch very slowly and dangerous for io, this service should work on cloud, like: https://github.com/qiniu/qshell/blob/master/docs/fetch.md

falstack commented 1 year ago

@soedirgo @fenos