73 lines
1.9 KiB
Markdown
73 lines
1.9 KiB
Markdown
---
|
|
title: Attachments
|
|
description: File uploads for comments.
|
|
navigation:
|
|
icon: i-lucide-paperclip
|
|
seo:
|
|
description: Configure file attachments 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
|
|
|
|
```php
|
|
// 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',
|
|
],
|
|
],
|
|
```
|
|
|
|
| Key | Default | Description |
|
|
|-----|---------|-------------|
|
|
| `enabled` | `true` | Show/hide the attachment upload UI |
|
|
| `disk` | `'public'` | Laravel filesystem disk for storage |
|
|
| `max_size` | `10240` | Maximum file size in kilobytes |
|
|
| `allowed_types` | images, pdf, text, word | Array of allowed MIME types |
|
|
|
|
## Disabling Attachments
|
|
|
|
```php
|
|
'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 `CommentAttachment` model provides:
|
|
|
|
```php
|
|
$attachment->isImage(); // Check if attachment is an image
|
|
$attachment->url(); // Get the storage URL
|
|
$attachment->formattedSize(); // Human-readable size (e.g., "2.5 MB")
|
|
```
|