Платформа
Файлы
Хранилище файлов проекта для фото, видео и PDF: загрузка, адреса, удаление и лимиты.
У каждого проекта есть хранилище для фото, видео, PDF и больших картинок. Файлы переживают любую сборку, их адреса не меняются. Код приложения ограничен 10 МБ архива и 15 МБ распакованной сборки, поэтому тяжёлое в код не кладут:
| Где лежит | Что |
|---|---|
| в коде приложения | иконки, шрифты, небольшие картинки |
| в хранилище проекта | фото, видео, PDF, большие иллюстрации |
| в самой странице | всё, что она показывает: хранилище страницам не служит |
Файлы приложения кладёт агент командой xflow storage push. Файлы от пользователей приложения
идут через функцию: её код решает, можно ли посетителю загружать.
Загрузка
Заголовок раздела «Загрузка»xflow storage push ./media --to mediaЗаливает папку или файл, сохраняя структуру папок.
| Флаг | Что делает |
|---|---|
--to <папка> |
в какую папку хранилища положить |
--replace |
заменить файл с другим размером, адрес сохраняется |
--json |
вывод одним JSON |
Заливается только недостающее: файл с тем же путём и размером пропускается, поэтому после
обрыва команду повторяют. Файл с другим размером без --replace остаётся как был. Скрытые
файлы (имя с точки) не уезжают.
xflow storage ls [папка] печатает путь, размер и адрес каждого файла, --json отдаёт список
целиком. Команды скачать файлы в папку нет.
Адреса файлов
Заголовок раздела «Адреса файлов»push и ls печатают относительный адрес /_files/<id>, его отдаёт адрес самого приложения:
<img src="/_files/8c1f…" alt="Товар">- Файл открывает тот, кто может открыть приложение. У приложения «Любой по ссылке» это любой посетитель без входа.
- Адрес постоянный,
--replaceего не меняет: ссылки в коде и в таблицах базы остаются рабочими. - В интерфейсе платформы файлы открывает тот, у кого есть доступ к проекту.
Файлы от пользователей приложения: функция просит у платформы одноразовую ссылку, браузер отправляет файл по ней в хранилище, функция подтверждает загрузку и получает адрес. Списка загруженного платформа не отдаёт: адрес нужно сразу записать в свою таблицу. Подробности агент знает из инструкции о платформе.
Удаление
Заголовок раздела «Удаление»xflow storage rm /_files/8c1f…xflow storage rm --folder media --yesУдаление необратимо. Без --yes удаление папки называет число файлов и ничего не делает.
Агенту нужно право «Удалять файлы»: по умолчанию выключено (в тех же папках файлы пользователей), включает человек в разделе «AI агент», без него команда отвечает отказом. В интерфейсе удаляет уровень «Редактирование».
Лимиты и типы
Заголовок раздела «Лимиты и типы»До 200 МБ на файл. Общий объём у организации задаёт тариф, его можно
докупить. Занятое и лимит показывает xflow whoami.
| Вид | Расширения |
|---|---|
| изображения | png, jpg, jpeg, gif, webp, avif, svg, ico, bmp, tif, tiff, heic, heif |
| документы | pdf, txt, md, rtf, csv, doc, docx, xls, xlsx, ppt, pptx, odt, ods, odp |
| данные | json, xml, yaml, yml, geojson, vtt, srt, dat |
| аудио | mp3, wav, ogg, oga, m4a, aac, flac, opus, weba |
| видео | mp4, webm, mov, m4v, mpg, mpeg, avi, mkv |
| шрифты | woff, woff2, ttf, otf |
| архивы | zip, gz, tgz, tar, 7z, rar |
Страницы, скрипты и программы (html, js, exe и подобные) не принимаются: код приложения
уезжает через деплой.
| Код отказа | Что значит |
|---|---|
invalid_name |
пустое или слишком длинное имя, / в имени файла |
file_too_large |
файл больше 200 МБ |
quota_exceeded |
место организации кончилось |
forbidden_type |
такой тип файла не принимается |
duplicate_name |
файл с таким именем уже есть в папке |
not_found |
файла или папки нет |
В интерфейсе файлы в блоке «Хранилище» на главной проекта: папки, занятое место, загрузка, предпросмотр, скачивание и удаление.