van-ons/laravel-attachment-library
Attach files to Laravel Eloquent models with a simple HasAttachments trait and Attachment model. Includes installer command for migrations/assets and an attachments relationship to link existing uploads to any model.
It's possible to customize how filenames are processed. By default, this package offers the ReplaceControlCharacters
file namer which accepts a search array and replace array. The default configuration is as follows:
// config/attachment-library.php
<?php
return [
// ...
'file_namers' => [
\VanOns\LaravelAttachmentLibrary\FileNamers\ReplaceControlCharacters::class => [
'search' => [
"/\u{AD}/u",
"/[\x{00A0}\x{1680}\x{180E}\x{2000}-\x{200B}\x{202F}\x{205F}\x{3000}\x{FEFF}]/u", // Whitespace characters
"/\p{C}/u", // To prevent corrupted path exception in WhiteSpaceNormalizer
],
'replace' => [
'-',
' ',
'',
],
],
],
];
The configuration above will replace whitespace characters with regular spaces, soft-hyphens with dashes, and strip any
action character. The configuration can be tailored to your needs, but the configuration also allows custom file namers.
To create a file namer, make sure to extend the FileNamer class as follows:
<?php
namespace App\FileNamers;
use VanOns\LaravelAttachmentLibrary\FileNamers\FileNamer;
class YourFileNamer extends FileNamer
{
public function execute(string $value): string
{
// ...
return $value;
}
}
The execute method will receive the filename without extension as a string and must return a string.
How can I help you explore Laravel packages today?