Info
Installation
composer require spatie/laravel-medialibrary:^7.0.0
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"
php artisan migrate
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"
Setting
-
'disks' => [
// ...
'media' => [
'driver' => 'local',
'root' => public_path('media'),
'url' => env('APP_URL') . '/media',
'visibility' => 'public',
],
// ...
],
-
return [
/*
* The disk on which to store added files and derived images by default. Choose
* one or more of the disks you've configured in config/filesystems.php.
*/
'disk_name' => 'media',
// ...
];
Usage
namespace App;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
class Test extends Model implements HasMedia
{
use HasMediaTrait;
// ...
}
// 取得物件
$item = Test::find(1);
// 設定媒體檔案,可以使用絕對路徑,網址連結或是表單上傳的檔案物件
$item->addMedia($pathToFile)
// 指定分類 test,或不填使用預設
->toMediaCollection('test');
$item = Test::find(1);
$media = $item->getMedia();
Converting
class Test extends Model implements HasMedia
{
// ...
/**
* register media conversions
*
* @param \Spatie\MediaLibrary\Models\Media $media
*/
public function registerMediaConversions(\Spatie\MediaLibrary\Models\Media $media = null)
{
// 建立 200x100 的縮圖
$this->addMediaConversion('thumb')
->width(200)
->height(120)
// 只處理 test collection
->performOnCollections('test')
// 預設會使用 queue 處理,可以利用這個函式直接處理不需透過 job
->nonQueued();
// 建立灰階圖片
$this->addMediaConversion('greyscale')
->greyscale()
->nonQueued();
}
// ...
-
之後如果有新增轉換格式,也可以透過 cmd 讓之前的檔案
重新產生,也可以利用參數指定條件
php artisan medialibrary:regenerate