概要
プロジェクトごとに複数の画像ファイルや説明文を管理するシステムをBubbleで作る方法を説明します。
プラグイン「Multi-File Uploader – Dropzone」
プラグイン「Multi-File Uploader – Dropzone」は、複数のファイルをドラッグアンドドロップで一度にアップロードできるプラグインです。
Bubble公式の作成したプラグインで、ドキュメントもあります。
YouTubeに解説動画があります。
![画像1](https://assets.st-note.com/production/uploads/images/50442417/picture_pc_d06445f70c71f7042f29e4dcc276a80c.png?width=800)
インストールすると、エレメントの「Input forms」内に「Multi-File Uploader」が追加されます。
![画像2](https://assets.st-note.com/production/uploads/images/50442536/picture_pc_4d6bf00e1a70526bcae9a3a2ff2c9430.png)
他のエレメントと同じように、画面に配置して使用します。
![画像3](https://assets.st-note.com/production/uploads/images/50442682/picture_pc_0546af90224d99da8a85cd30f815e490.png?width=800)
「Make this file private」にチェックを入れると、指定したユーザ(ログイン中のユーザなど)のみが表示できるようになります。
![画像4](https://assets.st-note.com/production/uploads/images/50444087/picture_pc_a11f7232cd79ace33e87632bf926398d.png?width=800)
動作確認のため、ファイルがアップロードされたらRepeating Groupで表示
Repeating Groupを配置し、Type of contentをfileに、Data Sourceを上記で配置したMulti-File Uploader A’s valueに設定します。
次に、セル内にGroupを作り、Type of contentをfileに、Data SourceをCurrent cell’s fileに設定します。
そして、グループ内に、画像、ファイル名、URLを表示します。それぞれParent group’s file、Parent group’s file’s filename、Parent group’s file’s URLです。
ファイルのURLをDBに保存
ファイルがアップロードされたら、ファイルのURLをDBに保存します。保存しておかないと、後から削除できなくなり、Freeプランの最大ストレージ容量の0.5GBを超えてしまう事があります。
既存のレコードに、URLを追加します。
ファイル名も扱えますが、同名の別ファイルがアップロードされた場合にURLと対応しづらくなるため、今回はURLのみ保存します。
先に、カラムをtext型のリストで作成しておきます。
![画像5](https://assets.st-note.com/production/uploads/images/50452550/picture_pc_85f3caa1a26ebc9655c784c9b1eff7b6.png?width=800)
Multi-File Uploaderでアップロードが発生したら、
(A)既存のレコードがあれば、アップロードされたURLを既存のURLに追加(既存レコードのカラムにadd listで追加)
(B)既存のレコードがなければ、アップロードされたURLを登録(カラムにset listで設定)
![画像6](https://assets.st-note.com/production/uploads/images/50452686/picture_pc_296c11c07ff2cb91423654172a82e6a9.png?width=800)
![画像7](https://assets.st-note.com/production/uploads/images/50452705/picture_pc_9b11b46532c271409ab85f6b6a8b433b.png?width=800)
画像表示用のRepeating Groupを修正
上述したRepeating Groupは、Multi-File Uploaderの値を表示するものでした。このままでは、複数回アップロードがあった場合に、最後のアップロードしか表示できないため、DBに格納したURLを使って表示するように変更します。
また、アップロードが完了したらMulti-File Uploaderはリセットしたいので、Multi-File UploaderをGroupに入れて、Workflowの「Multi-File Uploader A’s value is changed」でグループをreset dataします。
ファイル削除の実装
アップロードしたそれぞれのファイルは、Workflowの「Data(things)」ー「Delete an uploaded file」でURLを指定して削除できます。
上述したDBのレコードからもURLを削除しておきます。removeを使います。
![画像9](https://assets.st-note.com/production/uploads/images/50454019/picture_pc_85a1682ac2028b1834700ecd1a3a386e.png?width=800)
![画像8](https://assets.st-note.com/production/uploads/images/50453985/picture_pc_1f814bed59012906264df613d272a34b.png?width=800)
これでファイルのアップロードや削除ができるようになりました。
課題
このままではファイルの並び替えができないので、Draggable Elementプラグインを使うか、自前でさらなる工夫が必要です。
ノーコードラボさんの「Bubble でドラッグ&ドロップの並び替えをする方法」という記事がありますのでご覧ください。