aammui/laravel-media

用于laravel的文件和图片上传器。

v3.0.0 2023-02-16 16:14 UTC

This package is auto-updated.

Last update: 2024-09-16 19:49:45 UTC


README

Laravel 媒体处理器包。

内容

  1. 安装
  2. 发布资源和迁移
  3. 在模型中使用特质
  4. 从任何地方调用
  5. 独立媒体

安装

composer require aammui/laravel-media

Laravel 兼容性

发布资源

php artisan vendor:publish --provider="Aammui\LaravelMedia\LaravelMediaServiceProvider"
php artisan migrate

HasMedia 特质添加到您的模型中。

use Aammui\LaravelMedia\Traits\HasMedia;
use Illuminate\Database\Eloquent\Model;
 
class Document extends Model
{
    use HasMedia;
}

在模型表单中 wherever 使用。

$user->addMedia(request()->file);
$user->toCollection('profilePicture')
    ->addMedia(request()->file);
$user->toCollection('profilePicture')
     ->toDisk('public')
    ->addMedia(request()->file);
$user->toCollection('profilePicture')
     ->toDisk('public')
    ->addMedia(request()->file);

从 URL 添加媒体

这不会将媒体下载到您的存储中。它只是在数据库中添加 URL,当您的应用程序提供时,媒体将从远程 URL 加载。

$user->addMediaFromUrl('http://example.com/image.jpeg');
从远程 URL 下载和添加媒体。
$user->setDownloadTrue()
    ->addMediaFromUrl('http://example.com/image.jpeg');

从您的模型检索媒体

$user->getMedia();
$user->fromCollection('profilePicture')
    ->fromDisk('local')
    ->getMedia();

设置响应式图像

标准响应图像大小可以定义在配置文件中。原始图像将被调整到配置中定义的不同大小。

use Aammui\LaravelMedia\Enum\Responsive;

'responsive'=>[
   'responsive' => [
        Responsive::SM => [
            'w' => 50,
            'h' => 50,
        ],
        Responsive::MD => [
            'w' => 150,
            'h' => 150,
        ],
        Responsive::LG => [
            'w' => 600, // Can define either height or width only.
        ],
    ],
];
仅特定图像大小
use Aammui\LaravelMedia\Facades\Media;
use Aammui\LaravelMedia\Enum\Responsive;

Media::ofSize([Responsive::SM,Responsive::MD])
    ->addMedia(request()->file);

启用图像优化

'optimize'=>true

独立媒体

假设您想添加不属于任何模型的文件,那么您可以创建独立媒体。用例可能是您在电子商务商店的产品描述中存储图像,您可以在通过 API 提交产品表单之前将图像存储在数据库中,该 API 返回公共图像 URL。

use Aammui\LaravelMedia\Facades\Media; // Use Media facade instead

Media::addMedia(request()->file); // returns Media Object
Media::toCollection('profilePicture')
    ->addMedia(request()->file); // returns Media Object while storing grouping files in profilepicture
Media::toCollection('profilePicture')
    ->toStorage('s3')
    ->addMedia(request()->file); // returns Media Object while storing files in s3