Where / how to store user uploaded images / files with Forge for Jira Cloud?

Dear Community,

Is there a best practise on how to store “larger” data / files?
(as in: larger than 32 kB but smaller than lets say 1 MB)

If found this 2 year old thread. I fear nothing has changed since then:

Let’s say an app wants users to upload images, like user defined images for entities provided by the app. For examples a pool of images where one of them is randomly shown to the user.
Storage and Properties API has a limit of 32kB per entry. Even a small avatar can easily be that big. Imposing a 32kB upload limit for user provided images - except maybe icons - wouldn’t fly well.
Restricting the user to only upload SVGs for size purposes… not sure how well that flies either.

Attaching it to an issue isn’t an option because the context is the app, not an issue. Therefore, issue attachments cannot be used.
Attaching it to a project isn’t possible since projects do not have attachments. Same goes for the site as well as app.

I have seen Jira cloud apps doing it somehow. I wonder how they did it or if they used some sort of 3rd party file storage for this. Maybe they aren’t using Forge but Connect instead…
Or did they somehow downsample the image to fit into a key-value-store? ¯_(ツ)_/¯

It is not a huge impediment. It is just a deal breaker for on of our apps under development. :sweat_smile:

Possible Solution:

  • Allow attachments on (team-managed) projects or for apps. (I don’t get why there isn’t a universal attachment API. After all, each attachment has a unique id anyway, no matter what the “parent container” is)
  • external storage provider (defeats the purpose of Forge IMHO)
  • create some weird black magic blob-2-many_key_value_entries-mapper (fun, but please no!)
  • Allow a file storage API (preferred; on Server / Data Center an app can store files locally. That is one of the biggest features for enterprise grade apps, e.g. templates, archives, audit logs, …)
  • Use bitbucket or Git / SVN to store files (the limit of 100 network requests seems enough for this. If there would be an “requestBitbucket” which wouldn’t count against the quota, than that would be even cooler. Repository size limits on BitBucket should be okay too, if the app doesn’t go crazy)

Any thoughts?