← Tous les guides natifs

Xodera Plugins · Bubble Native

Xodera B2 Files Native

Gardez les pièces jointes de votre app dans votre propre stockage Backblaze B2. Les utilisateurs autorisés ajoutent, parcourent et téléchargent les fichiers ; le partage public reste un choix explicite.

Guides bêta publics · instructions Haptics dans sa fiche Bubble

Offre bêta publique : installation Bubble gratuite · essai de 7 jours avec carte, puis 1,50 USD/mois par plugin/projet.

Documentation révisée 6 novembre 2026

Exemples pratiques

Conserver une pièce jointe dans votre propre bucket privé

Une Intervention Bubble a besoin d’une référence durable ; une URL de lecture expirante ne doit pas devenir l’identité du fichier.

`bucket_binding_id = an allowed binding to your own private bucket` ; les `local_uri`, `display_name`, `mime_type` et `expected_size` dynamiques décrivent le fichier local sélectionné.

Prévu : Check local source → Upload file → attendre `upload_verified`. Votre flux de travail stocke ensuite `asset_ref` et les métadonnées sur l’enregistrement de tâche possédé.

Utilisez `asset_ref`, `size_bytes`, `mime_type` et `upload_status`. Resolve private read peut ensuite fournir une URL temporaire pour un usage autorisé.

Si la base échoue après `upload_verified`, reprenez sa mise à jour avec la même référence, sans nouveau PUT. Réconciliez `upload_pending` avec Check or recover upload status et le même ID d’envoi.

Prévu. Votre compte B2 prend en charge le stockage et les téléchargements.

Créer une galerie de pièces jointes avec des références durables

Une galerie a besoin de noms, types, pagination et d’un accès fiable à l’élément choisi.

Après un envoi vérifié, le Fichier de votre app conserve `asset_ref`, nom, MIME et relation propriétaire/intervention. Une URI locale n’est pas son identité cloud.

Prévu : List my B2 files fournit les fichiers à afficher. Utilisez asset_refs pour les références et les valeurs de même index pour les noms et types. La sélection fournit asset_ref à Get asset metadata ou Download accepted version.

`has_more` et `next_cursor` appartiennent à la requête courante. Un téléchargement achevé retourne `local_output_uri`, copie sur l’appareil et non lien public permanent.

Réinitialisez la pagination après changement de liaison, compte ou requête. Sur `transfer_error`, conservez le Fichier existant et affichez `error_code` sans substituer une autre version fournisseur.

Prévu. Votre compte B2 prend en charge le stockage et les téléchargements.

Confirmer la publication et la suppression d’une version précise

Le personnel ne doit pas exposer une pièce privée par erreur ni supprimer toutes les versions lors d’un remplacement.

`asset_ref = the selected accepted version` ; la liaison du seau et les permissions de fichiers de l’application doivent autoriser l’opération demandée.

Affichez la visibilité courante, demandez confirmation, puis appelez Change public sharing. Pour supprimer, utilisez Delete accepted version avec confirmation ; gardez les métadonnées métier tant que le résultat n’est pas confirmé.

Après `share_changed`, utilisez `visibility` et `public_url` uniquement si le partage public a été autorisé. Après `delete_completed`, mettez à jour le Fichier ; `delete_pending` n’est pas une suppression définitive.

Réconciliez un résultat incertain au lieu de supposer la réussite. Une URL fournisseur déjà émise peut rester valide jusqu’à expiration ; supprimer une ligne ou désactiver le partage ne rappelle pas les octets téléchargés.

Prévu. Votre compte B2 prend en charge le stockage et les téléchargements.

Ce qui fonctionne maintenant

Plugin prévu. Il n’est pas encore installé ni disponible à l’usage. Le guide ci-dessous décrit le parcours de fichiers prévu.

Construire le workflow

Prévu

Parcours prévu. Pas encore disponible dans la bêta actuelle.

Les exemples utilisent des fiches comme Lesson, Message et Order. Remplacez-les par vos types de données et noms d’éléments. Utilisez vos propres fichiers à la place des adresses d’exemple.

  1. Prévu : choisissez votre stockage B2 et le bucket autorisé dans les réglages du projet. Définissez confidentialité, préfixe de dossier, types et tailles acceptés.

  2. List B2 bindings affiche les emplacements autorisés. List my B2 files affiche les fichiers de l’utilisateur ; Get my B2 file info donne les détails.

  3. Choisissez un fichier. Renseignez bucket_binding_id, local_uri, display_name, mime_type et expected_size, puis Upload file. Montrez la progression, mais attendez upload_verified avant de considérer le fichier enregistré.

  4. Gardez asset_ref dans votre fiche. Utilisez-le pour Get asset metadata, Resolve private read ou Download accepted version. Change public sharing et Delete accepted version demandent une confirmation distincte.

Diagramme de flux — pas une capture d’écran d’application · SVG

Configurer une fois

L’activation par clé est prévue pour ce plugin. Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins. Choisissez Xodera B2 Files Native, copiez sa clé, puis ouvrez Bubble → Plugins → Xodera B2 Files Native et collez-la dans project_api_key. Enregistrez une fois, puis utilisez les actions ci-dessous. Chaque plugin de chaque projet possède sa propre clé.

Utilisez votre compte Backblaze B2 et choisissez le bucket de cette app. Décidez qui peut lire et ajouter des fichiers. Indiquez les noms des champs User yes/no dans b2_reader_permission_field et b2_writer_permission_field ; défauts b2_files_reader et b2_files_writer. Seul un administrateur autorisé doit modifier ces permissions.

Configurer une fois
  1. Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins.
  2. Choisissez ce plugin et copiez sa clé de projet.
  3. Prévu: Ouvrez Bubble → Plugins → Xodera B2 Files Native ; collez la clé dans project_api_key et enregistrez.
  4. Ajoutez l’élément, choisissez vos données et construisez le workflow ci-dessous.
  5. Accès bêta privée uniquement pour le moment. Installation publique et activation payante non ouvertes.
Installation et abonnement

Pour Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit et Haptics : installation Bubble gratuite, essai de 7 jours avec carte, puis 1,50 USD par mois, par plugin et projet. Développement et production inclus, sans plafond d’opérations. Les limites de fichier et de fonction restent applicables. Vérifiez facturation et annulation avant confirmation. Les autres plugins ne sont pas ouverts à l’achat.

Enregistrer le résultat dans votre app

Exemple Attachment : asset_ref, rapport ou commande, owner, display_name, mime_type et size_bytes. Enregistrez après upload_verified. asset_ref permet de rouvrir le fichier ; une adresse de lecture temporaire ou un chemin d’appareil n’est pas une référence permanente. Si la sauvegarde de la fiche échoue, recommencez cette sauvegarde, pas l’envoi du fichier.

Échec, annulation et reprise

Si le résultat d’un envoi est inconnu, gardez upload_id et utilisez Check or recover upload status. Ne renvoyez pas une copie automatiquement. Cancel concerne le transfert inachevé, pas un fichier déjà enregistré. Si l’accès expire, redemandez le fichier au lieu de réutiliser une ancienne adresse temporaire.

Fonctions et limites

Taille maximale de fichier prévue : 256 MiB, ou une limite de bucket inférieure que vous choisissez. Les frais de stockage et de téléchargement Backblaze appartiennent à votre compte B2. Les fichiers dans un bucket public sont publics même lorsque l'enregistrement d'application associé est privé. Aucune promesse de scan antivirus, de téléchargement multipart, de pause ou de récupération après la terminaison de l'application.

Réglages, actions et résultats

Utilisez ces noms dans Bubble. Les fonctionnalités prévues sont marquées séparément.

Paramètres bêta disponibles

Réglages de l’élément

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

États

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

Événements

file_selectedupload_startedupload_transport_completedupload_verifiedupload_pendingbuckets_loadedbucket_selectedlist_loadedmetadata_loadedread_resolveddownload_completedshare_changeddelete_completeddelete_pendingbrowse_loadedtransfer_cancelledcleanup_pendingtransfer_errorsession_cleared

Actions et paramètres

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
Réglages de l’élément · 14

Parcours prévu. Pas encore disponible dans la bêta actuelle.

bucket_binding_idtext · Défaut: ""
Valeur exemple<binding returned by List B2 bindings>
Expression Bubble exempleSelected Binding's binding_id
Emplacement fourni par List B2 bindings. Utilisez son ID pour ce fichier.
local_uritext · Défaut: ""
Valeur exemplefile:///app-cache/attachment.jpg
Expression Bubble exempleOffline Files' local_uri
Emplacement lisible sur cet appareil. Ce n’est pas un lien de téléchargement en ligne.
display_nametext · Défaut: ""
Valeur exemplereport-photo.jpg
Expression Bubble exempleSelected Attachment's display_name
Utilisez la valeur de la fiche courante et les limites ci-dessous.
mime_typetext · Défaut: ""
Valeur exempleimage/jpeg
Expression Bubble exemplePhoto Editor's output_mime
Utilisez la valeur de la fiche courante et les limites ci-dessous.
expected_sizenumber · Défaut: 0
Valeur exemple246975
Expression Bubble exempleOffline Files' size_bytes
Utilisez la valeur de la fiche courante et les limites ci-dessous.
metadata_jsontext · Défaut: ""
Valeur exemple{"label":"field-report"}
Expression Bubble exempleSelected Attachment's safe_metadata_json
JSON facultatif, par exemple le libellé d’un rapport. Gardez-le court et sans données personnelles.
asset_reftext · Défaut: ""
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
is_activeyes_no · Défaut: true
Valeur exempleyes
Expression Bubble exempleGuideHost's view_is_active (your yes/no custom state)
yes tant que cette vue est ouverte ; no en la quittant pour arrêter la lecture ou l’action en cours.
disabledyes_no · Défaut: false
Valeur exempleno
Expression Bubble exempleGuideHost's is_busy (your yes/no custom state)
Désactivez l’élément si l’app est occupée ou l’action indisponible.
languagetext · Défaut: "auto"
Valeur exempleuk
Expression Bubble exempleCurrent User's preferred_language
Utilisez language=auto pour suivre une langue prise en charge sur l’appareil ou dans le navigateur. Saisissez un code de langue pris en charge pour la choisir explicitement.
ui_text_jsontext · Défaut: ""
Valeur exemple{}
Expression Bubble exempleApp Settings' player_labels_json (supported keys only)
JSON facultatif avec les libellés de boutons pris en charge. Laissez vide pour les textes intégrés.
titletext · Défaut: ""
Valeur exempleLesson 4 — review
Expression Bubble exempleSelected Lesson's name
Texte visible ; vide utilise le texte localisé prévu. Aucun identifiant secret.
show_previewyes_no · Défaut: false
Valeur exempleyes
Expression Bubble exempleApp Settings' b2_preview
Afficher ou masquer l’aperçu du fichier.
show_provider_browseyes_no · Défaut: false
Valeur exempleno
Expression Bubble exempleCurrent User's authorized_browse_UI (presentation only)
Afficher ou masquer les commandes de navigation du stockage pour les utilisateurs autorisés.
Actions et paramètres · 20

Parcours prévu. Pas encore disponible dans la bêta actuelle.

List allowed buckets

Aucun paramètre d’action

Select bucket binding
binding_idtext · Défaut: —
Valeur exemple<returned allowed binding ID>
Expression Bubble exempleSelected Binding's binding_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Check local source

Aucun paramètre d’action

Upload file
acknowledge_public_bytesyes_no · Défaut: —
Valeur exempleno
Expression Bubble exemplePublic bucket disclosure Checkbox is checked (private bucket: no)
Utilisez la valeur de la fiche courante et les limites ci-dessous.
confirm_retryyes_no · Défaut: —
Valeur exempleno
Expression Bubble exempleRetry Checkbox is checked after confirmed clean pending status
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Check or recover upload status
upload_idtext · Défaut: —
Valeur exemple<original returned upload_id>
Expression Bubble exempleCurrent UploadIntent's upload_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Cancel owned transfer

Aucun paramètre d’action

Clear local session

Aucun paramètre d’action

List application files

Aucun paramètre d’action

Refresh application files

Aucun paramètre d’action

Load more application files

Aucun paramètre d’action

Select asset reference
asset_reftext · Défaut: —
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Get asset metadata
asset_reftext · Défaut: —
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Resolve private read
asset_reftext · Défaut: —
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Download accepted version
asset_reftext · Défaut: —
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Browse provider files
prefixtext · Défaut: —
Valeur exemple""
Expression Bubble exempleAuthorized Browse Settings' prefix
Utilisez la valeur de la fiche courante et les limites ci-dessous.
load_moreyes_no · Défaut: —
Valeur exempleno
Expression Bubble exempleLoad More button only, for unchanged query
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Change public sharing
asset_reftext · Défaut: —
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
enabledyes_no · Défaut: —
Valeur exempleno
Expression Bubble exemplePublic Share Checkbox is checked after separate confirmation
Utilisez la valeur de la fiche courante et les limites ci-dessous.
confirmyes_no · Défaut: —
Valeur exempleyes — explicit confirmation only
Expression Bubble exempleConfirm Checkbox is checked
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Delete accepted version
asset_reftext · Défaut: —
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
confirmyes_no · Défaut: —
Valeur exempleyes — explicit confirmation only
Expression Bubble exempleConfirm Checkbox is checked
Utilisez la valeur de la fiche courante et les limites ci-dessous.
List B2 bindings
environmenttext · Défaut: —
Valeur exempledevelopment
Expression Bubble exempleApp Settings' selected_environment
Utilisez la valeur de la fiche courante et les limites ci-dessous.

Retours

ok · yes/nostatus · texterror_code · textbinding_ids · text listlabels · text listprivacy · text listmax_size_bytes · number list
List my B2 files
environmenttext · Défaut: —
Valeur exempledevelopment
Expression Bubble exempleApp Settings' selected_environment
Utilisez la valeur de la fiche courante et les limites ci-dessous.
binding_idtext · Défaut: —
Valeur exemple<returned allowed binding ID>
Expression Bubble exempleSelected Binding's binding_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
limitnumber · Défaut: —
Valeur exemple50
Expression Bubble exempleGallery Settings' page_size
Utilisez la valeur de la fiche courante et les limites ci-dessous.
cursortext · Défaut: —
Valeur exemple""
Expression Bubble exemplePrevious List my B2 files result's next_cursor; empty on first page
Utilisez la valeur de la fiche courante et les limites ci-dessous.

Retours

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 · text
Get my B2 file info
environmenttext · Défaut: —
Valeur exempledevelopment
Expression Bubble exempleApp Settings' selected_environment
Utilisez la valeur de la fiche courante et les limites ci-dessous.
binding_idtext · Défaut: —
Valeur exemple<returned allowed binding ID>
Expression Bubble exempleSelected Binding's binding_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
asset_reftext · Défaut: —
Valeur exemple<returned asset_ref>
Expression Bubble exempleSelected B2Asset's asset_ref
Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.

Retours

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
États et événements

Parcours prévu. Pas encore disponible dans la bêta actuelle.

États

status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.

is_busy · yes_no

Une action est en cours. Attendez avant d’en lancer une autre.

upload_id · text

Identifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.

upload_status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.

asset_ref · text

Identifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.

display_name · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

mime_type · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

size_bytes · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

bytes_sent · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

progress · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

progress_indeterminate · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

temporary_read_url · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

read_expires_at · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

local_output_uri · text

Emplacement du fichier sur cet appareil. Sauvegardez ou envoyez-le séparément pour le conserver en ligne.

public_url · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

visibility · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

next_cursor · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

has_more · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

query_revision · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

files_json · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

buckets_json · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

remote_files_json · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

remote_next_cursor · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

remote_has_more · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

remote_query_revision · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

bucket_binding_id · text

Identifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.

cleanup_pending · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

error_code · text

Information sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.

error_message · text

Information sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.

Événements

file_selected

À cet événement, lisez les états correspondants du même élément.

upload_started

À cet événement, lisez les états correspondants du même élément.

upload_transport_completed

À cet événement, lisez les états correspondants du même élément.

upload_verified

À cet événement, lisez les états correspondants du même élément.

upload_pending

À cet événement, lisez les états correspondants du même élément.

buckets_loaded

À cet événement, lisez les états correspondants du même élément.

bucket_selected

À cet événement, lisez les états correspondants du même élément.

list_loaded

À cet événement, lisez les états correspondants du même élément.

metadata_loaded

À cet événement, lisez les états correspondants du même élément.

read_resolved

À cet événement, lisez les états correspondants du même élément.

download_completed

À cet événement, lisez les états correspondants du même élément.

share_changed

À cet événement, lisez les états correspondants du même élément.

delete_completed

À cet événement, lisez les états correspondants du même élément.

delete_pending

À cet événement, lisez les états correspondants du même élément.

browse_loaded

À cet événement, lisez les états correspondants du même élément.

transfer_cancelled

À cet événement, lisez les états correspondants du même élément.

cleanup_pending

À cet événement, lisez les états correspondants du même élément.

transfer_error

À cet événement, lisez les états correspondants du même élément.

session_cleared

À cet événement, lisez les états correspondants du même élément.

Questions des développeurs

Puis-je garder l’URL temporaire comme fichier ?

Non. Gardez asset_ref et métadonnées canoniques. Réautorisez les lectures ; un chemin appareil n’est pas un Bubble File.

Comment fonctionne l’abonnement ?

Tarification prévue : l'installation du plugin dans Bubble est gratuite. L'accès BestPlugins est un abonnement séparé pour chaque plugin dans chaque projet d'application Bubble : 7 jours gratuits, puis US$1.50 par mois. Development et Live sont inclus. Il n'y a pas de limite fixe au nombre d'opérations ; les limites de taille de fichier et de fonctionnalités restent applicables. Le paiement n'est pas encore ouvert. L'écran d'activation affichera la première date de facturation et les conditions d'annulation.

Guides associés

Marketplace publication en attente

Guide du forum non publié

Pour obtenir de l’aide, indiquez le plugin, l’appareil, l’action essayée et le résultat. Utilisez un exemple sans données personnelles. Ne partagez jamais votre clé ni vos fichiers privés.