Логотип Аурабаза
аурабазадокументы
документы›Путеводители›Store and serve files (SDK)

Храните и обслуживайте файлы с помощью JavaScript SDK.

Ежедневные потоки aura.storage с правилами доступа, соблюдаемыми для работающего стека.

8 мин читать·Уровень средний·Пересмотрено 12 окт. 2026 г.
Этот текст на английском языке был создан автоматически на основе французского оригинала и еще не проверялся.
Эта страница была переведена автоматически. Английская версия является авторитетной.
#
Ведра

1. Ведра

Корзина группирует файлы и решает, являются ли они общедоступными. Для создания и удаления сегментов требуется ключ service_role. Для их просмотра требуется вошедший в систему пользователь или ключ service_role; только открытый ключ получает 403.

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // любой может прочитать файлы
await admin.storage.createBucket('invoices', { public: false })  // только их владелец может
const { data: buckets } = await admin.storage.listBuckets()

Корзина также принимает fileSizeLimit (в байтах) и allowedMimeTypes. Слишком большая загрузка возвращает 413, а недопустимый тип возвращает 400.

#
Файлы

2. Загрузить, скачать, перечислить, удалить

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

// Загрузка: Blob, файл или ArrayBuffer.
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → {ключ, сегмент, URL, размер, тип_контента, etag }

// Заменить существующий файл
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// Перечислить папку, скачать, удалить
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`])

Чего ожидать:

  • При загрузке существующего пути возвращается 409, если вы не передадите upsert: true.
  • Для загрузки требуется вошедший в систему пользователь или ключ service_role. Только открытый ключ получает 403 даже для общедоступного сегмента.
  • Путь с .. отклоняется с 400.
  • Пути являются общими внутри сегмента. Если у другого пользователя уже есть путь, вы получаете 409. Поместите файлы каждого пользователя в отдельную папку, например ${user.id}/….
#
Делиться

3. Поделитесь файлом

share.tstypescript
// Файл в общедоступной корзине: постоянный URL-адрес, созданный без запроса.
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://my-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// Личный файл: временная ссылка
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → { URL, expires_in: 60 }

Обе ссылки были получены без какого-либо ключа и вернули файл. Подписанная ссылка перестает работать через expires_in секунд. Чтобы разрешить браузеру загрузку без ключа, сервер создает createSignedUploadUrl(path) (вызов service_role).

#
Доступ

4. Кто что может делать

ДействиеОткрытый ключВошедший пользовательservice_role
Чтение файла в общедоступной корзинедадада
Чтение, размещение файла в частной корзиненеттолько его владелецда
Загрузитьнетдада
Заменить или удалить файлнеттолько его владелецда
Получение списка сегментовнетдада
Создание, удаление сегментовнетнетда

Владельцем является пользователь, загрузивший файл. При реальном запуске второй пользователь не мог просмотреть, загрузить или удалить файл первого пользователя в частной корзине, а также не смог его заменить.

#
Сервер

5. Перемещение и копирование с сервера

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')

Изменение размера изображения описано в справочнике по хранилищу.

Последнее обновление · 12 окт. 2026 г.