Files
relaticle-comments/raw/essentials/attachments.md
github-actions[bot] 7c9f000e60 Deploy 1.x docs
2026-03-27 11:03:10 +00:00

2.5 KiB

Attachments

File uploads for comments.

Overview

Comments support file attachments for both images and documents. Images are displayed inline within the comment body, while documents appear as downloadable links.

Configuration

// config/comments.php
'attachments' => [
    'enabled' => true,
    'disk' => 'public',
    'max_size' => 10240, // KB (10 MB)
    'allowed_types' => [
        'image/jpeg',
        'image/png',
        'image/gif',
        'image/webp',
        'application/pdf',
        'text/plain',
        'application/msword',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    ],
],
<th>
  Default
</th>

<th>
  Description
</th>
<td>
  <code>
    true
  </code>
</td>

<td>
  Show/hide the attachment upload UI
</td>
<td>
  <code>
    'public'
  </code>
</td>

<td>
  Laravel filesystem disk for storage
</td>
<td>
  <code>
    10240
  </code>
</td>

<td>
  Maximum file size in kilobytes
</td>
<td>
  images, pdf, text, word
</td>

<td>
  Array of allowed MIME types
</td>
Key
enabled
disk
max_size
allowed_types

Disabling Attachments

'attachments' => [
    'enabled' => false,
],

This removes the file upload UI from the comment form entirely.

Storage

Attachments are stored via Livewire's file upload mechanism. Each attachment record tracks:

  • file_path -- Path on the configured disk
  • original_name -- Original filename for display
  • mime_type -- MIME type for rendering decisions
  • size -- File size in bytes
  • disk -- Storage disk name

When a comment is deleted, its attachments are cascade deleted from the database. The physical files are removed from the disk.

Helper Methods

The Attachment model (Relaticle\Comments\Models\Attachment) provides:

$attachment->isImage();       // Check if attachment is an image
$attachment->url();           // Get the storage URL
$attachment->formattedSize(); // Human-readable size (e.g., "2.5 MB")