jeffreyvanrossum/laravel-simple-media

此包已被放弃,不再维护。未建议替代包。

用于 Laravel 的简单媒体包。

dev-master 2020-06-25 22:49 UTC

This package is auto-updated.

Last update: 2024-04-26 07:37:30 UTC


README

SimpleMedia for Laravel 是一个用于处理附加或不附加到 Eloquent 模型的媒体的包。

这个包非常处于开发过程中。

对于更完善的包,您可能需要尝试使用来自 SpatieLaravel 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 模型上使用 uploadImageuploadFile 方法。

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 作为组。
  • 如果使用的文件名在目标文件夹中不唯一,则会添加一个数字到名称中,直到它是唯一的。
  • 此包不对文件类型进行限制。没有文件类型验证,如果您需要,可以自行实现。

待办事项

  • 实现一些基本的品质降低和/或压缩。
  • 在删除时,也要从磁盘中删除文件。
  • 更好地支持从请求中上传。
  • 添加更多测试。