File
Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.
-
Разделы
Прежде чем использовать файловое поле необходимо убедиться, что на директорию storage установлена символическая ссылка
php artisan storage:link
use MoonShine\Fields\File; //...public function fields(): array{ return [ //... File::make('File', 'file') ->dir('/') // Директория где будут хранится файлы в storage (по умолчанию /) ->disk('public') // Filesystems disk ->allowedExtensions(['jpg', 'gif', 'png']) // Допустимые расширения //... ];}//...
Для правильной генерации URL-адреса файла вы должны определить переменную окружения APP_URL
таким образом,
чтобы она соответствовала URL-адресу вашего приложения.
При использовании драйвера local
возвращаемое значение url
не представляет собой URL-адрес.
По этой причине мы рекомендуем всегда хранить ваши файлы с именами, которые будут создавать действительные URL-адреса.
# Мультизагрузка
Для загрузки нескольких файлов используется метод multiple()
use MoonShine\Fields\File; //...public function fields(): array{ return [ //... File::make('File', 'file') ->multiple(), //... ];}//...
Поле в базе необходимо типа text или json.
Также необходимо добавить cast для eloquent модели - json, или array, или collection.
# Удаление файлов
Для возможности удаления файлов необходимо воспользоваться методом removable()
use MoonShine\Fields\File; //...public function fields(): array{ return [ //... File::make('File', 'file') ->removable(), //... ];}//...
Метод disableDeleteFiles()
позволят удалить только запись в базе данных,
но не удалять сам файл
use MoonShine\Fields\File; //...public function fields(): array{ return [ //... File::make('File', 'file') ->removable() ->disableDeleteFiles(), //... ];}//...
Метод enableDeleteDir()
удаляет директорию указанную в методе dir()
, если она пуста
use MoonShine\Fields\File; //...public function fields(): array{ return [ //... File::make('File', 'file') ->dir('/images/') ->removable() ->enableDeleteDir(), //... ];}//...
# Запрет на скачивание
Если необходимо исключить возможность скачивания файла воспользуйтесь методом disableDownload()
use MoonShine\Fields\File; //...public function fields(): array{ return [ //... File::make('File', 'file') ->disableDownload(), //... ];}//...
# Оригинальное имя файла
Если необходимо сохранять оригинальное имя файла от клиента воспользуйтесь методом keepOriginalFileName()
use MoonShine\Fields\File; //...public function fields(): array{ return [ //... File::make('File', 'file') ->keepOriginalFileName(), //... ];}//...
# Произвольное имя файла
Если необходимо сохранять произвольное имя файла воспользуйтесь методом customName('file_name'))
use MoonShine\Fields\File;use Illuminate\Http\UploadedFile;use Illuminate\Support\Str; //...public function fields(): array{ return [ //... File::make('File', 'file') ->customName(fn(UploadedFile $file) => Str::random(10) . '.' . $file->extension()), //... ];}//...