Skip to content

Files and attachments

For administrators.

Who may attach what, how large, and how many, decided per brand, per group of people.

Five groups

The answer genuinely differs by who is sending and what they are sending it to:

GroupTypically
Clients, on tickets, reports and chatsPictures, documents, logs
Agents, on ticketsThe above plus diagnostics: har, json, archives
Administrators, on ticketsThe above plus sql, pcap, configuration files
Agents, on issuesThe above plus source code
Administrators, on issuesEverything the desk allows

Each group has its own list of kinds, its own largest file and its own files at once, on the brand’s Files tab.

The list is the whole decision

Nothing is taken whose kind is not on the list, and anything on the list is taken: including php, sh or exe where a desk wants them. There is no hidden deny-list overriding your choice.

An empty list is a real answer: nobody in that group may attach anything.

The one rule that is not a setting

A file has to be what its name says.

A compiled program (Windows, Linux, macOS or a Java class, read from the file’s own first bytes) is refused unless its extension is one that holds a program. So agent.exe is taken wherever exe is listed, and the same bytes called Handler.php or invoice.pdf are not.

That is the only content check. A .png that is really a PDF is stored as it is and shown as a document rather than a broken image, because the desk records the detected type and every thumbnail decides from that.

Sizes, honestly

Defaults are 10 MB and 10 files per group; the ceilings are 100 MB and 25 files.

Whatever you set is narrowed by what PHP will actually accept (upload_max_filesize, post_max_size, max_file_uploads). The desk never advertises more than the server takes: the Files panel says, per group, when PHP is the narrower one, and every form, the desk’s own composer, the Blesta module’s dropzone, the chat widget, states the real number.

If a group needs more than the server allows, raise the PHP values; setting a bigger number in the desk alone changes nothing but the message.

Where the rules apply

All of them, with the same numbers: staff tickets and replies, the integration API (client tickets, guest tickets, replies, reports), the chat widget (capped at three files whatever the brand allows), issue files and issue comments, and inbound email: where a file the brand does not take is left behind rather than bouncing the whole message.

Storage and serving

Files live on disk under storage/app, outside the web root, and are only ever served as downloads with nosniff. Images preview inline in the app because the desk fetches and displays them, not because the file is served as a page.

Screening

Optionally, images uploaded by visitors are screened (Settings → Location and visitors → Content screening; none, OpenAI’s moderation endpoint, or a question to the brand’s own model). A flagged file is quarantined: never served inline again, never shown to the assistant, the visitor blocked, the chat ended, and the department alerted. Staff can reveal one deliberately, which is logged.

Quarantined files are kept for the retention you set, then purged.

Advice

  • Widen deliberately, per group. Agents on issues wanting source is normal; clients on tickets wanting sql usually is not.
  • Check the PHP note on the Files panel before promising a client 50 MB.
  • Do not rely on extensions for safety. They decide what is allowed, and the program check decides what is honest; neither is antivirus. If you need scanning, screen at the mail gateway or the storage layer.