Загрузить образ в хранилище Supabase с помощью API-интерфейсов хранилища

avatar
MANISH AGRAWAL
1 июля 2021 в 18:25
2091
1
0

Супабаза прекрасна!! Я пытаюсь загрузить изображение в общедоступную корзину, используя запрос POST на адрес <SUPABASE_URL>/storage/v1/object/<BUCKET_NAME>/<IMAGE_NAME>.

.

Сложность заключается в том, что у меня есть только строка изображения в кодировке base64, и я не могу выполнить успешный запрос к вышеуказанной конечной точке. Пробовал множество итераций настройки Content-type, но безуспешно.

Я пытаюсь загрузить свой образ из Appsmith, который предоставляет формат base64 для изображения, из которого мне нужно будет попасть в указанную выше конечную точку.

Пожалуйста, помогите мне здесь.

Источник
Ashley
3 июля 2021 в 15:09
0

Этот ответ может помочь: coderhelper.com/a/36183085/196834

Ответы (1)

avatar
dshukertjr
8 июля 2021 в 04:44
0

Я рад, что нашел еще одного поклонника Supabase, такого как я!

Я слышу твою боль. Не могли бы вы попробовать эту технику для преобразования строки с основанием 64 в объект blob?

const byteCharacters = atob(b64Data);

const byteNumbers = new Array(byteCharacters.length);
for (let i = 0; i < byteCharacters.length; i++) {
    byteNumbers[i] = byteCharacters.charCodeAt(i);
}

const byteArray = new Uint8Array(byteNumbers);

const blob = new Blob([byteArray], {type: contentType});        

Переменная большого двоичного объекта в конце — это переменная, которую можно использовать для загрузки в Supabase.

Кроме того, рассматривали ли вы возможность использования Supabase-js SDK? Это сделает вашу жизнь намного проще, поскольку они предоставляют улучшенный API для взаимодействия с Supabase.

Вы можете получить пакет supabase-js здесь: https://www.npmjs.com/package/@supabase/supabase-js

И вы можете найти пример кода здесь: https://supabase.io/docs/reference/javascript/storage-from-upload

В вашем случае вы можете сделать что-то вроде этого, чтобы загрузить файл:

const { data, error } = await supabase
  .storage
  .from('avatars')
  .upload('public/sample.png', blob, {
    cacheControl: 3600,
    upsert: false
  })
MANISH AGRAWAL
15 июля 2021 в 15:27
1

Я использовал AppSmith для создания информационной панели, где вариант использования для загрузки изображения не удался, поскольку AppSmith только что предоставил мне значение base64, и у меня была только возможность выполнить запрос POST к конечной точке /storage в моем экземпляре superbase. В результате мне пришлось перейти с Appsmith, чтобы полностью написать свой дашборд на Next.js. Я чувствую, что принял правильное решение, поскольку Next.js + Supabase удивляет. Также время от времени зависал appsmith (платформа с низким кодом). В любом случае большое спасибо за ваш совет.

dshukertjr
16 июля 2021 в 03:13
0

@MANISHAGRAWAL Рад слышать, что у тебя все получается!