Xodera Plugins · Bubble Native
Xodera B2 Files Native
Храните вложения приложения в собственном хранилище Backblaze B2. Позвольте разрешённым пользователям загружать, просматривать и скачивать файлы, а также явно выбирать, когда файл может быть опубликован публично.
Public beta guides · Haptics instructions are in its Bubble listing
Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.
Документация проверена 6 в ноябре 2026
Практические примеры
Сохраните вложение задания в собственный приватный bucket разработчика
Задаче Bubble требуется надёжная ссылка на хранилище, не рассматривая истекающий URL загрузки как идентификатор файла.
`bucket_binding_id = an allowed binding to your own private bucket`; динамические `local_uri`, `display_name`, `mime_type` и `expected_size` описывают выбранный локальный файл.
Запланировано: Check local source → Upload file → ожидать `upload_verified`. Затем ваш рабочий процесс сохраняет `asset_ref` и метаданные в собственную запись Job.
Используйте `asset_ref`, `size_bytes`, `mime_type` и `upload_status`. Позже Resolve private read может предоставить временный URL для авторизованного использования.
Если сохранение в базе данных не удалось после `upload_verified`, повторите обновление БД с тем же ссылочным объектом, а не новой загрузкой. Проверьте результат `upload_pending`, используя Check or recover upload status и тот же ID загрузки.
Запланировано. Ваш аккаунт B2 оплачивает расходы на хранение и скачивание файлов.
Создайте собственную галерею вложений с надёжными записями файлов.
Галерее файлов нужны имена, типы и пагинация, а также способ открыть выбранный объект позже.
Запись File вашего приложения сохраняет принятый `asset_ref`, отображаемое имя, MIME и связь владелец/задача после подтверждённой загрузки; не используйте локальный URI в качестве облачной идентичности.
Запланировано: использовать List my B2 files для построения списка вложений. asset_refs идентифицирует файлы; значения с тем же индексом предоставляют их имена и типы. Выбор файла передаёт его asset_ref в Get asset metadata или Download accepted version.
`has_more` и `next_cursor` относятся к текущему запросу. Завершённая загрузка возвращает `local_output_uri`; это локальная копия устройства, а не постоянная публичная ссылка.
Сбросьте пагинацию после изменений привязки/учётной записи/запроса. При `transfer_error` сохраните существующий объект File Thing и отобразите `error_code`; не заменяйте его тихо другой версией провайдера.
Запланировано. Ваш аккаунт B2 оплачивает расходы на хранение и скачивание файлов.
Сделайте публикацию и удаление конкретной версии осознанными.
Сотрудники не должны случайно раскрывать приватное вложение или удалять все версии при замене изображения.
`asset_ref = the selected accepted version`; привязка bucket и разрешения файлов приложения должны позволять запрошенную операцию.
Отобразите текущую видимость, запросите явное подтверждение, затем выполните Change public sharing. Для удаления вызовите Delete accepted version с подтверждением; сохраняйте метаданные приложения, пока не будет известен подтверждённый результат.
После `share_changed` используйте `visibility` и `public_url` только при явном разрешении публичного доступа. После `delete_completed` обновите собственную запись File; `delete_pending` не является окончательным удалением.
Проверьте результат неопределённой операции вместо предположения об успехе. Ранее выданные URL чтения провайдера могут оставаться действительными до истечения срока; удаление строки БД или отключение доступа не отменяет уже загруженные байты.
Запланировано. Ваш аккаунт B2 оплачивает расходы на хранение и скачивание файлов.
Что работает сейчас
Запланированный плагин. Он ещё не установлен и недоступен для использования. Ниже приведён гид, показывающий предполагаемый рабочий процесс с файлами.
Создайте рабочий процесс
Запланировано
Запланированный рабочий процесс. Пока недоступен в текущей бете.
В этих примерах используются записи приложений, такие как Lesson, Message и Order. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.
Запланировано: в настройках проекта выберите хранилище B2 и разрешённый bucket. Установите его конфиденциальность, префикс папки и допустимые типы и размеры файлов.
Используйте List B2 bindings для отображения доступных вариантов хранилища. Используйте List my B2 files для показа файлов текущего пользователя, а Get my B2 file info — для деталей.
Выберите файл. Установите bucket_binding_id, local_uri, display_name, mime_type и expected_size, затем запустите Upload file. Показывайте прогресс, но дождитесь upload_verified, прежде чем считать файл сохранённым.
Сохраните asset_ref в записи вашего приложения. Используйте его для Get asset metadata, Resolve private read или Download accepted version. Change public sharing и Delete accepted version требуют отдельного подтверждения.
Настройте один раз
Активация ключа запланирована для этого плагина. Создайте или выберите ваш проект приложения Bubble в BestPlugins → Dashboard → Plugins. Выберите Xodera B2 Files Native, скопируйте его ключ, затем откройте Bubble → Plugins → Xodera B2 Files Native и вставьте его в project_api_key. Сохраните один раз; затем используйте действия ниже. Каждый плагин в каждом проекте имеет свой собственный ключ.
Используйте свою учётную запись Backblaze B2 и выберите bucket для этого приложения. Определите, кто может читать и загружать файлы. Сохраните имена соответствующих полей пользователя типа да/нет в b2_reader_permission_field и b2_writer_permission_field; значения по умолчанию — b2_files_reader и b2_files_writer. Только уполномоченный администратор должен изменять эти разрешения пользователей.
Настройте один раз
- Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
- Выберите этот плагин и скопируйте его ключ проекта.
- Запланировано: открыть Bubble → Plugins → Xodera B2 Files Native; вставить ключ в project_api_key и сохранить.
- Добавьте элемент, выберите данные вашего приложения и постройте рабочий процесс ниже.
- Доступ к закрытой бете только сейчас. Публичная установка и платная активация ещё не открыты.
Установка и подписка
For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.
Сохраните результат в вашем приложении
Пример вложения: asset_ref, связанный отчёт/заказ, владелец, display_name, mime_type и size_bytes. Сохраните их после upload_verified. Используйте asset_ref для повторного открытия файла позже; временный адрес чтения или путь на одном устройстве не являются постоянной ссылкой на файл. Если сохранение записи в базе данных не удалось, повторите попытку сохранения этой записи, а не загружайте файл заново.
Сбой, отмена и восстановление
Если результат загрузки неизвестен, сохраните upload_id и используйте Check or recover upload status. Не загружайте другую копию автоматически. Отмена влияет на незавершённую передачу, а не на уже сохранённый файл. Если доступ истёк, запросите файл заново вместо повторного использования старого временного адреса.
Возможности и ограничения
Запланированный максимальный размер файла: 256 MiB, либо более низкий лимит bucket, который вы выберете. Плата Backblaze за хранение и скачивание файлов относится к вашей учётной записи B2. Файлы в публичном bucket являются публичными, даже если связанная запись приложения приватна. Нет обещания сканирования на вирусы, multipart‑загрузки, паузы или восстановления после завершения работы приложения.
Настройки, действия и результаты
Используйте эти имена в Bubble. Планируемые функции отмечены отдельно.
Доступные настройки бета-версии
Настройки элемента
bucket_binding_id · textlocal_uri · textdisplay_name · textmime_type · textexpected_size · numbermetadata_json · textasset_ref · textis_active · yes_nodisabled · yes_nolanguage · textui_text_json · texttitle · textshow_preview · yes_noshow_provider_browse · yes_noСостояния
status · textis_busy · yes_noupload_id · textupload_status · textasset_ref · textdisplay_name · textmime_type · textsize_bytes · numberbytes_sent · numberprogress · numberprogress_indeterminate · yes_notemporary_read_url · textread_expires_at · textlocal_output_uri · textpublic_url · textvisibility · textnext_cursor · texthas_more · yes_noquery_revision · textfiles_json · textbuckets_json · textremote_files_json · textremote_next_cursor · textremote_has_more · yes_noremote_query_revision · textbucket_binding_id · textcleanup_pending · yes_noerror_code · texterror_message · textСобытия
file_selectedupload_startedupload_transport_completedupload_verifiedupload_pendingbuckets_loadedbucket_selectedlist_loadedmetadata_loadedread_resolveddownload_completedshare_changeddelete_completeddelete_pendingbrowse_loadedtransfer_cancelledcleanup_pendingtransfer_errorsession_clearedДействия и их входные данные
List allowed bucketsSelect bucket bindingCheck local sourceUpload fileCheck or recover upload statusCancel owned transferClear local sessionList application filesRefresh application filesLoad more application filesSelect asset referenceGet asset metadataResolve private readDownload accepted versionBrowse provider filesChange public sharingDelete accepted versionНастройки элемента · 14
Запланированный рабочий процесс. Пока недоступен в текущей бете.
bucket_binding_idtext · По умолчанию: ""- Пример значения
<binding returned by List B2 bindings> - Пример Bubble выражения
Selected Binding's binding_id - Выбор хранилища, возвращённый List B2 bindings. Используйте его ID для этого файла.
local_uritext · По умолчанию: ""- Пример значения
file:///app-cache/attachment.jpg - Пример Bubble выражения
Offline Files' local_uri - Читаемое расположение файла на этом устройстве. Это не онлайн‑ссылка для загрузки.
display_nametext · По умолчанию: ""- Пример значения
report-photo.jpg - Пример Bubble выражения
Selected Attachment's display_name - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
mime_typetext · По умолчанию: ""- Пример значения
image/jpeg - Пример Bubble выражения
Photo Editor's output_mime - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
expected_sizenumber · По умолчанию: 0- Пример значения
246975 - Пример Bubble выражения
Offline Files' size_bytes - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
metadata_jsontext · По умолчанию: ""- Пример значения
{"label":"field-report"} - Пример Bubble выражения
Selected Attachment's safe_metadata_json - Опциональный JSON с информацией приложения, например меткой отчёта. Делайте его небольшим и избегайте персональных данных.
asset_reftext · По умолчанию: ""- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
is_activeyes_no · По умолчанию: true- Пример значения
yes - Пример Bubble выражения
GuideHost's view_is_active (your yes/no custom state) - Установить «да», пока этот вид открыт. Установить «нет» при закрытии, чтобы воспроизведение или текущая работа могли остановиться.
disabledyes_no · По умолчанию: false- Пример значения
no - Пример Bubble выражения
GuideHost's is_busy (your yes/no custom state) - Отключить элемент, пока приложение занято или действие недоступно.
languagetext · По умолчанию: "auto"- Пример значения
uk - Пример Bubble выражения
Current User's preferred_language - Установите language=auto для следования за поддерживаемым устройством или языком браузера. Введите поддерживаемый код языка, чтобы выбрать его явно.
ui_text_jsontext · По умолчанию: ""- Пример значения
{} - Пример Bubble выражения
App Settings' player_labels_json (supported keys only) - Необязательный JSON с поддерживаемыми надписями кнопок. Оставьте пустым, чтобы использовать встроенный текст.
titletext · По умолчанию: ""- Пример значения
Lesson 4 — review - Пример Bubble выражения
Selected Lesson's name - Видимый текст приложения; пустое значение использует встроенный локализованный текст, где поддерживается. Без учётных данных.
show_previewyes_no · По умолчанию: false- Пример значения
yes - Пример Bubble выражения
App Settings' b2_preview - Показать или скрыть предварительный просмотр файла.
show_provider_browseyes_no · По умолчанию: false- Пример значения
no - Пример Bubble выражения
Current User's authorized_browse_UI (presentation only) - Показать или скрыть элементы управления просмотром хранилища для разрешённых пользователей.
Действия и их входные данные · 20
Запланированный рабочий процесс. Пока недоступен в текущей бете.
List allowed buckets
Нет параметров действия
Select bucket binding
binding_idtext · По умолчанию: —- Пример значения
<returned allowed binding ID> - Пример Bubble выражения
Selected Binding's binding_id - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Check local source
Нет параметров действия
Upload file
acknowledge_public_bytesyes_no · По умолчанию: —- Пример значения
no - Пример Bubble выражения
Public bucket disclosure Checkbox is checked (private bucket: no) - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
confirm_retryyes_no · По умолчанию: —- Пример значения
no - Пример Bubble выражения
Retry Checkbox is checked after confirmed clean pending status - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Check or recover upload status
upload_idtext · По умолчанию: —- Пример значения
<original returned upload_id> - Пример Bubble выражения
Current UploadIntent's upload_id - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Cancel owned transfer
Нет параметров действия
Clear local session
Нет параметров действия
List application files
Нет параметров действия
Refresh application files
Нет параметров действия
Load more application files
Нет параметров действия
Select asset reference
asset_reftext · По умолчанию: —- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
Get asset metadata
asset_reftext · По умолчанию: —- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
Resolve private read
asset_reftext · По умолчанию: —- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
Download accepted version
asset_reftext · По умолчанию: —- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
Browse provider files
prefixtext · По умолчанию: —- Пример значения
"" - Пример Bubble выражения
Authorized Browse Settings' prefix - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
load_moreyes_no · По умолчанию: —- Пример значения
no - Пример Bubble выражения
Load More button only, for unchanged query - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Change public sharing
asset_reftext · По умолчанию: —- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
enabledyes_no · По умолчанию: —- Пример значения
no - Пример Bubble выражения
Public Share Checkbox is checked after separate confirmation - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
confirmyes_no · По умолчанию: —- Пример значения
yes — explicit confirmation only - Пример Bubble выражения
Confirm Checkbox is checked - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Delete accepted version
asset_reftext · По умолчанию: —- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
confirmyes_no · По умолчанию: —- Пример значения
yes — explicit confirmation only - Пример Bubble выражения
Confirm Checkbox is checked - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
List B2 bindings
environmenttext · По умолчанию: —- Пример значения
development - Пример Bubble выражения
App Settings' selected_environment - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Возвраты
ok · yes/nostatus · texterror_code · textbinding_ids · text listlabels · text listprivacy · text listmax_size_bytes · number listList my B2 files
environmenttext · По умолчанию: —- Пример значения
development - Пример Bubble выражения
App Settings' selected_environment - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
binding_idtext · По умолчанию: —- Пример значения
<returned allowed binding ID> - Пример Bubble выражения
Selected Binding's binding_id - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
limitnumber · По умолчанию: —- Пример значения
50 - Пример Bubble выражения
Gallery Settings' page_size - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
cursortext · По умолчанию: —- Пример значения
"" - Пример Bubble выражения
Previous List my B2 files result's next_cursor; empty on first page - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Возвраты
ok · yes/nostatus · texterror_code · textasset_refs · text listdisplay_names · text listmime_types · text listsize_bytes · number listcreated_ats · text listvisibility · text listpublic_urls · text listprovider_status · text listinspection_status · text listmetadata_labels · text listhas_more · yes/nonext_cursor · textquery_revision · textGet my B2 file info
environmenttext · По умолчанию: —- Пример значения
development - Пример Bubble выражения
App Settings' selected_environment - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
binding_idtext · По умолчанию: —- Пример значения
<returned allowed binding ID> - Пример Bubble выражения
Selected Binding's binding_id - Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
asset_reftext · По умолчанию: —- Пример значения
<returned asset_ref> - Пример Bubble выражения
Selected B2Asset's asset_ref - Стабильный непрозрачный идентификатор принятого ресурса от сервиса. Выбор его никогда не обходил бы авторизацию пользователя.
Возвраты
ok · yes/nostatus · texterror_code · textasset_ref · textdisplay_name · textmime_type · textsize_bytes · numbercreated_at · textvisibility · textpublic_url · textprovider_status · textinspection_status · textmetadata_label · textСостояния и события
Запланированный рабочий процесс. Пока недоступен в текущей бете.
Состояния
status · textТекущий результат этого действия. Используйте соответствующее событие завершения перед сохранением успеха.
is_busy · yes_noРабота всё ещё продолжается. Подождите, прежде чем начинать другое действие.
upload_id · textИдентификатор этого элемента или действия. Храните его вместе с соответствующей записью приложения. Используйте тот же идентификатор запроса при повторной попытке при неопределённом результате.
upload_status · textТекущий результат этого действия. Используйте соответствующее событие завершения перед сохранением успеха.
asset_ref · textИдентификатор этого элемента или действия. Храните его вместе с соответствующей записью приложения. Используйте тот же идентификатор запроса при повторной попытке при неопределённом результате.
display_name · textТекущее значение выбранного элемента. Читайте его после связанного события.
mime_type · textТекущее значение выбранного элемента. Читайте его после связанного события.
size_bytes · numberТекущее значение выбранного элемента. Читайте его после связанного события.
bytes_sent · numberТекущее значение выбранного элемента. Читайте его после связанного события.
progress · numberТекущее значение выбранного элемента. Читайте его после связанного события.
progress_indeterminate · yes_noТекущее значение выбранного элемента. Читайте его после связанного события.
temporary_read_url · textТекущее значение выбранного элемента. Читайте его после связанного события.
read_expires_at · textТекущее значение выбранного элемента. Читайте его после связанного события.
local_output_uri · textРасположение файла на этом устройстве. Сохраните или загрузите файл отдельно, если его необходимо хранить онлайн.
public_url · textТекущее значение выбранного элемента. Читайте его после связанного события.
visibility · textТекущее значение выбранного элемента. Читайте его после связанного события.
next_cursor · textТекущее значение выбранного элемента. Читайте его после связанного события.
has_more · yes_noТекущее значение выбранного элемента. Читайте его после связанного события.
query_revision · textТекущее значение выбранного элемента. Читайте его после связанного события.
files_json · textТекущее значение выбранного элемента. Читайте его после связанного события.
buckets_json · textТекущее значение выбранного элемента. Читайте его после связанного события.
remote_files_json · textТекущее значение выбранного элемента. Читайте его после связанного события.
remote_next_cursor · textТекущее значение выбранного элемента. Читайте его после связанного события.
remote_has_more · yes_noТекущее значение выбранного элемента. Читайте его после связанного события.
remote_query_revision · textТекущее значение выбранного элемента. Читайте его после связанного события.
bucket_binding_id · textИдентификатор этого элемента или действия. Храните его вместе с соответствующей записью приложения. Используйте тот же идентификатор запроса при повторной попытке при неопределённом результате.
cleanup_pending · yes_noТекущее значение выбранного элемента. Читайте его после связанного события.
error_code · textИнформация об ошибке последнего действия. Показать полезное сообщение и предложить соответствующий повтор.
error_message · textИнформация об ошибке последнего действия. Показать полезное сообщение и предложить соответствующий повтор.
События
file_selectedКогда происходит это событие, считайте связанные состояния из того же элемента.
upload_startedКогда происходит это событие, считайте связанные состояния из того же элемента.
upload_transport_completedКогда происходит это событие, считайте связанные состояния из того же элемента.
upload_verifiedКогда происходит это событие, считайте связанные состояния из того же элемента.
upload_pendingКогда происходит это событие, считайте связанные состояния из того же элемента.
buckets_loadedКогда происходит это событие, считайте связанные состояния из того же элемента.
bucket_selectedКогда происходит это событие, считайте связанные состояния из того же элемента.
list_loadedКогда происходит это событие, считайте связанные состояния из того же элемента.
metadata_loadedКогда происходит это событие, считайте связанные состояния из того же элемента.
read_resolvedКогда происходит это событие, считайте связанные состояния из того же элемента.
download_completedКогда происходит это событие, считайте связанные состояния из того же элемента.
share_changedКогда происходит это событие, считайте связанные состояния из того же элемента.
delete_completedКогда происходит это событие, считайте связанные состояния из того же элемента.
delete_pendingКогда происходит это событие, считайте связанные состояния из того же элемента.
browse_loadedКогда происходит это событие, считайте связанные состояния из того же элемента.
transfer_cancelledКогда происходит это событие, считайте связанные состояния из того же элемента.
cleanup_pendingКогда происходит это событие, считайте связанные состояния из того же элемента.
transfer_errorКогда происходит это событие, считайте связанные состояния из того же элемента.
session_clearedКогда происходит это событие, считайте связанные состояния из того же элемента.
Вопросы, которые задают разработчики
Могу ли я сохранить временный URL чтения как свой файл?
Нет. Сохраните asset_ref и канонические метаданные. Повторно авторизуйте чтения; путь загрузки на устройстве не является файлом Bubble.
Как работает подписка?
Запланированное ценообразование: установка плагина в Bubble бесплатна. Доступ к BestPlugins — отдельная подписка для каждого плагина в каждом проекте приложения Bubble: 7 дней бесплатно, затем US$1.50 в месяц. Включены Development и Live. Нет фиксированного ограничения на количество операций; ограничения по размеру файлов и функциям по‑прежнему действуют. Оформление заказа ещё недоступно. На экране активации будет показана первая дата выставления счёта и условия отмены.
Связанные руководства
Marketplace ожидает выпуска
Руководство форума не опубликовано
Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.