EMZETT.
Войти

Vercel Blob Storage

Коротко: Служба хранения файлов от Vercel (похожая на S3 от AWS) для загрузки и раздачи файлов, таких как изображения или загрузки, напрямую связанная с проектом Vercel.

Подробнее: Хранилище (store) бывает либо публичным (любой, у кого есть URL, может увидеть файл — подходит для изображений товаров), либо приватным (доступ только через подписанные URL/выделенный маршрут проверки — подходит для конфиденциальных вложений). У проекта одновременно может быть несколько хранилищ.

Наш контекст: В Emzett два отдельных хранилища — публичное для изображений товаров/баннеров и приватное для вложений чата и тикетов, а также загрузок ПО (которые выдаются только после проверки покупки).

Подробности

Почему не просто public/?

Ключевое преимущество перед «просто положить файлы в каталог public/ проекта Next.js»: файлы в папке public/ — часть самого деплоя; каждая новая загрузка изображения товара требовала бы полного нового деплоя, а папка со временем неограниченно росла бы в репозитории Git, без нужды раздувая время клонирования и размер деплоя. Blob-хранилище, напротив, — самостоятельная служба хранения, в которую файлы можно загружать прямо из браузера во время выполнения, без повторного деплоя:

import { put } from "@vercel/blob";
const blob = await put("product-image.jpg", file, {
  access: "public",
});
// blob.url -> напрямую используемый публичный URL

Прямая загрузка клиентом вместо обхода через сервер

Часто упускаемая деталь: Vercel Blob поддерживает клиентские загрузки прямо из браузера в blob-хранилище, БЕЗ необходимости сначала целиком пропускать файл через ваш собственный сервер. Это обходит два практических ограничения: обычно ограниченный размер тела запроса у serverless-функций и лишнюю нагрузку на сервер от простого «пропускания» больших файлов. Для этого ваш сервер сначала создаёт недолговечный подписанный URL загрузки, который затем напрямую использует браузер — ваш сервер никогда не видит сам файл, только подтверждение успешной загрузки.

Публичные и приватные подробно

В приватных хранилищах защита доступа исходит не от самого URL (он намеренно не угадывается, но технически это всё же лишь «безопасность через неясность»); вместо этого доступ должен идти через выделенный маршрут, проверяемый на сервере, — например, API-маршрут, который сначала проверяет, что пользователь действительно купил соответствующий товар, и только затем возвращает недолговечный подписанный URL для скачивания. Эти подписанные URL действительны ограниченное время (обычно от минут до нескольких часов) — даже если URL по ошибке передан дальше, он автоматически теряет силу по истечении срока, и никому не нужно вмешиваться вручную.

Сравнение с классическими службами объектного хранения

Концептуально Vercel Blob Storage — упрощённое объектное хранилище, подобное AWS S3 или Cloudflare R2: все три хранят файлы как неструктурированные «объекты» под уникальным ключом/путём, а не в классической файловой системе с настоящими структурами каталогов. Разница в основном в глубине интеграции: Vercel Blob встроен прямо в платформу Vercel (не нужна отдельная настройка облачной учётной записи, оплата напрямую через ту же учётную запись Vercel), тогда как S3 как самостоятельная служба AWS требует больше усилий по настройке, но предлагает и более широкий набор функций (например, детальные права IAM).

См. также: Vercel, AWS