File Sharing in Chat
SetGet Chat supports rich file sharing directly within conversations. You can upload images, documents, archives, and code files to any channel or direct message. Files are stored securely on your instance's S3-compatible storage backend and are accessible to all members of the conversation.
Upload methods
There are three ways to attach a file to a chat message.
Drag and drop
Drag one or more files from your file manager onto the message composer area. A drop zone indicator appears when files are detected over the composer. Release the mouse button to queue the files for upload. You can add a text message alongside the attachments before pressing Enter to send.
Attachment button
- Click the paperclip icon on the left side of the message composer.
- A file picker dialog opens.
- Select one or more files from your local file system.
- The selected files appear as thumbnails above the composer.
- Optionally type a message, then press Enter to send.
Paste from clipboard
Copy an image or file to your clipboard (for example, take a screenshot with your operating system's screenshot tool) and press Ctrl+V / Cmd+V in the message composer. The pasted content is automatically converted into a file attachment. This method works for:
- Screenshots
- Images copied from a browser
- Files copied from your file manager (support varies by operating system)
TIP
Pasting an image from the clipboard is the fastest way to share a screenshot with your team. No intermediate save step is required.
Supported file types
SetGet Chat accepts a wide range of file types. The following table lists the supported categories.
Images
| Extension | MIME Type | Preview | Lightbox |
|---|---|---|---|
.jpg / .jpeg | image/jpeg | Yes | Yes |
.png | image/png | Yes | Yes |
.gif | image/gif | Yes (animated) | Yes |
.webp | image/webp | Yes | Yes |
.svg | image/svg+xml | Yes | Yes |
Documents
| Extension | MIME Type | Preview |
|---|---|---|
.pdf | application/pdf | Yes (first page) |
.doc / .docx | application/msword / application/vnd.openxmlformats-officedocument.wordprocessingml.document | No (download only) |
.xls / .xlsx | application/vnd.ms-excel / application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | No (download only) |
Archives
| Extension | MIME Type | Preview |
|---|---|---|
.zip | application/zip | No (download only) |
.tar | application/x-tar | No (download only) |
.tar.gz / .tgz | application/gzip | No (download only) |
Code files
| Extension | MIME Type | Preview |
|---|---|---|
.js | text/javascript | Syntax-highlighted preview |
.ts | text/typescript | Syntax-highlighted preview |
.go | text/x-go | Syntax-highlighted preview |
.py | text/x-python | Syntax-highlighted preview |
.json | application/json | Syntax-highlighted preview |
.yaml / .yml | text/yaml | Syntax-highlighted preview |
.md | text/markdown | Rendered preview |
WARNING
Files with unrecognized MIME types are still accepted up to the size limit, but they will not display an inline preview. Recipients can always download these files.
File size limit
The maximum file size per upload is 50 MB. If you attempt to upload a file that exceeds this limit, an error message appears in the composer and the upload is rejected.
| Constraint | Value |
|---|---|
| Maximum file size | 50 MB |
| Maximum files per message | 10 |
| Maximum total upload per message | 100 MB |
TIP
For files larger than 50 MB, consider uploading them to your workspace's file storage or a shared drive and pasting a link into the chat message instead.
Inline images vs file attachments
SetGet Chat distinguishes between two display modes for uploaded files.
Inline images
When you upload an image file (jpg, png, gif, webp, svg), it is rendered directly in the message body as an inline image. Inline images display at a maximum width of 400 pixels within the message bubble. The recipient sees the image content without needing to click or download anything.
Inline images support:
- Automatic aspect ratio preservation
- Animated GIF playback
- Click-to-expand into the media lightbox
File attachments
Non-image files (documents, archives, code files) are displayed as file attachment cards below the message text. Each card shows:
- File name
- File extension icon
- File size
- A Download button
Image preview in messages
Image attachments render a thumbnail preview directly in the message stream. The preview is generated server-side to minimize bandwidth usage. Thumbnail behavior:
- Images under 200 KB are sent at original resolution.
- Larger images are downscaled to a 800-pixel-wide thumbnail for the preview.
- The original full-resolution image is preserved in storage for lightbox viewing and download.
Media lightbox
Click any inline image in a message to open the media lightbox. The lightbox provides:
- Full-resolution view of the image against a dark backdrop.
- Zoom controls to zoom in and out.
- Navigation arrows if the message contains multiple images, allowing you to browse through all attachments.
- Download button to save the original file to your device.
- Close button or press Esc to exit the lightbox.
When a channel contains many images, you can scroll through all shared media in chronological order using the navigation arrows.
PDF preview
PDF files receive special treatment. When a PDF is uploaded:
- A thumbnail of the first page is generated and displayed as a preview card in the message.
- Clicking the preview card opens a full PDF viewer in a side panel.
- The PDF viewer supports page navigation, zoom, and download.
TIP
PDF preview is generated on the server. If a PDF is password-protected, only the download option is available -- no preview is shown.
File download
Every shared file can be downloaded regardless of whether a preview is available.
To download a file:
- Hover over the file attachment or inline image in the message.
- Click the download icon that appears in the overlay.
- The file downloads to your browser's default download location.
Alternatively, in the media lightbox, click the Download button in the toolbar.
Downloaded files retain their original file name and extension.
File storage backend
SetGet stores all uploaded chat files on the configured S3-compatible storage backend (MinIO by default). The storage architecture works as follows:
- Presigned upload: When you select a file, the frontend requests a presigned upload URL from the API.
- Direct upload: The browser uploads the file directly to the storage endpoint using the presigned URL. This keeps large files off the API server.
- Confirmation: After the upload completes, the frontend sends a confirmation to the API, which records the file metadata (name, size, MIME type, storage key) in the database.
- Presigned download: When a recipient views the message, the API generates a short-lived presigned download URL so the browser can fetch the file directly from storage.
| Component | Role |
|---|---|
| MinIO / S3 | Object storage for file blobs |
| API server | Issues presigned URLs, stores metadata in MongoDB |
| Frontend | Handles upload/download via presigned URLs |
WARNING
File storage credentials are managed server-side. They are never exposed to the browser. The presigned URL mechanism ensures secure, time-limited access to each file.
Managing shared files
Deleting a file
When you delete a message that contains file attachments, the files are also removed from storage after a short retention period. There is no way to delete an individual file from a message without deleting the entire message.
Shared files panel
Each channel has a Shared Files section accessible from the channel info panel. This section lists all files shared in the channel, sorted by date. You can:
- Browse files by type (images, documents, other)
- Download any file directly from the panel
- Click a file to jump to the original message in the conversation
Related pages
- Messages -- Sending, editing, and deleting messages
- Channels -- Creating and managing channels
- Channel Settings -- Configuring channel preferences
- Chat Overview -- Introduction to SetGet Chat