Logo Aurabase
aurabazadokumenty
dokumenty›Przewodniki›Store and serve files (SDK)

Przechowuj i udostępniaj pliki za pomocą pakietu JavaScript SDK

Codzienne przepływy aura.storage z regułami dostępu obserwowanymi w odniesieniu do działającego stosu.

8 min przeczytane·Poziom mediator·Zmieniono 12 paź 2026
Ten tekst w języku angielskim został wygenerowany automatycznie na podstawie francuskiego oryginału i nie był jeszcze recenzowany.
Ta strona została przetłumaczona automatycznie. Wersja angielska jest miarodajna.
#
Wiadra

1. Wiadra

Wiadro grupuje pliki i decyduje, czy są one publiczne. Tworzenie i usuwanie segmentów wymaga klucza service_role. Do ich wystawienia potrzebny jest zalogowany użytkownik lub klucz service_role; sam klucz publiczny otrzymuje 403.

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // każdy może przeczytać pliki
await admin.storage.createBucket('invoices', { public: false })  // może to zrobić tylko ich właściciel
const { data: buckets } = await admin.storage.listBuckets()

Wiadro akceptuje również fileSizeLimit (w bajtach) i allowedMimeTypes. Przesyłanie, które jest zbyt duże, zwraca 413, a niedozwolony typ zwraca 400.

#
Akta

2. Przesyłaj, pobieraj, wyświetlaj listę i usuwaj

files.tstypescript
const bucket = aura.storage.from('invoices')

// Prześlij: obiekt Blob, plik lub ArrayBuffer
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → { klucz, wiadro, adres URL, rozmiar, typ_zawartości, etag }

// Zastąp istniejący plik
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// Wyświetl folder, pobierz, usuń
const { data: files } = await bucket.list(user.id)
const { data: blob } = await bucket.download(`${user.id}/2026-10.pdf`)
await bucket.remove([`${user.id}/2026-10.pdf`])

Czego się spodziewać:

  • Przesyłanie istniejącej ścieżki zwraca 409, chyba że przekażesz upsert: true.
  • Przesyłanie wymaga zalogowanego użytkownika lub klucza service_role. Sam klucz publiczny otrzymuje 403, nawet w przypadku segmentu publicznego.
  • Ścieżka z .. została odrzucona z 400.
  • Ścieżki są współdzielone w zasobniku. Jeśli inny użytkownik ma już ścieżkę, otrzymasz 409. Umieść pliki każdego użytkownika w jego własnym folderze, na przykład ${user.id}/….
#
Udział

3. Udostępnij plik

share.tstypescript
// Plik w zasobniku publicznym: stały adres URL, zbudowany bez żądania
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://my-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// Plik prywatny: łącze tymczasowe
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → { url, wygasa za: 60 }

Obydwa linki zostały pobrane bez klucza i zwróciły plik. Podpisane łącze przestaje działać po expires_in sekundach. Aby przeglądarka mogła przesyłać dane bez klucza, serwer wysyła createSignedUploadUrl(path) (wywołanie service_role).

#
Dostęp

4. Kto i co może zrobić

DziałanieKlucz publicznyZalogowany użytkownikservice_role
Przeczytaj plik w zasobniku publicznymTakTakTak
Przeczytaj, wypisz plik w prywatnym wiadrzeNIEtylko jego właścicielTak
WgrywaćNIETakTak
Zastąp lub usuń plikNIEtylko jego właścicielTak
Lista wiaderNIETakTak
Twórz i usuwaj segmentyNIENIETak

Właścicielem jest użytkownik, który przesłał plik. W rzeczywistości drugi użytkownik nie mógł wyświetlić, pobrać ani usunąć pliku pierwszego użytkownika w prywatnym zasobniku, a także nie mógł go zastąpić.

#
Serwer

5. Przenieś i skopiuj z serwera

server/organise.tstypescript
await admin.storage.copy('invoices', 'a/hello.txt', 'a/copy.txt')
await admin.storage.move('invoices', 'a/copy.txt', 'a/moved.txt')
const { data: meta } = await admin.storage.getMetadata('invoices', 'a/hello.txt')

Zmiana rozmiaru obrazu jest opisana w w dokumencie dotyczącym przechowywania.

Ostatnia aktualizacja · 12 paź 2026