jeffreyvanrossum / laravel-simple-media
此包已被放弃,不再维护。未建议替代包。
用于 Laravel 的简单媒体包。
dev-master
2020-06-25 22:49 UTC
Requires
- intervention/image: ^2.4@dev
Requires (Dev)
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^9.0
- psalm/plugin-laravel: ^1.2
This package is auto-updated.
Last update: 2024-04-26 07:37:30 UTC
README
SimpleMedia for Laravel 是一个用于处理附加或不附加到 Eloquent 模型的媒体的包。
这个包非常处于开发过程中。
对于更完善的包,您可能需要尝试使用来自 Spatie 的 Laravel Medialibrary。
安装
composer require jeffreyvanrossum/laravel-simple-media
配置
您可以使用以下命令发布和运行迁移:
php artisan vendor:publish --provider="Jeffreyvr\SimpleMedia\SimpleMediaServiceProvider" --tag="migrations" php artisan migrate
您可以使用以下命令发布配置文件:
php artisan vendor:publish --provider="Jeffreyvr\SimpleMedia\SimpleMediaServiceProvider" --tag="config"
自动生成额外的图像大小
如果您想生成图像缩略图,这可能很有用。您可以在配置中定义缩略图图像大小,如下所示:
'image_sizes' => [ 'thumbnail' => [ 'width' => 100, 'height' => 100, 'crop' => true // determine if the image needs to be cropped ], // etc. ]
图像驱动程序
默认图像驱动程序是 gd
。您也可以在配置文件中指定 imagick
。
存储
您可以在配置文件中指定应使用哪个 文件存储 磁盘来处理上传。默认情况下,它使用 public
。
使用方法
添加未附加的文件和图像
要上传,您可以在 Media
模型上使用 uploadImage
和 uploadFile
方法。
Media::uploadImage($file); // for images Media::uploadFile($file); // for files other then images
调用这些方法将自动将记录插入到数据库中。您可以通过向这些方法提供第二个参数来指定/覆盖属性。
Media::uploadImage($file, ['name' => 'A custom name', 'group' => 'profile-images']);
您可以将上传到与配置文件中指定的不同的磁盘,如下所示:
Media::uploadImage($file, ['disk' => 'local']);
您可以通过使用这些方法来处理来自 Request
的上传:
Media::uploadFileFromRequest($key); Media::uploadImageFromRequest($key);
要检索媒体,您可以执行以下操作:
Media::all(); Media::where('group', $group)->get(); // etc.
附加到 Eloquent 模型
要将媒体附加到 Eloquent 模型,您必须首先将 HasMedia
特性添加到模型中。
您可以通过向这些方法提供第二个参数(array
)来指定/覆盖属性。
$post->attachImage($file); // for images $post->attachFile($file); // for files other then images
或者,如果您想使用请求中的文件,您可以这样做:
$post->attachImageFromRequest($key); $post->attachFileFromRequest($key);
要检索媒体,您可以这样做:
$post->media();
Blade
@foreach ($post->media as $file) {{$file->getOriginalUrl()}} @endforeach
要按组检索媒体,您可以这样做:
$post->mediaByGroup('profile-images')->get();
删除媒体
如果您在 Media
实例上调用 delete
方法,它将删除记录和磁盘上关联的文件。
$media->delete();
注意
- 如果您没有指定组,图像上传将默认使用
images
作为组。其他文件将默认使用files
作为组。 - 如果使用的文件名在目标文件夹中不唯一,则会添加一个数字到名称中,直到它是唯一的。
- 此包不对文件类型进行限制。没有文件类型验证,如果您需要,可以自行实现。
待办事项
- 实现一些基本的品质降低和/或压缩。
- 在删除时,也要从磁盘中删除文件。
- 更好地支持从请求中上传。
- 添加更多测试。