Spatie laravel media library 라라벨 이미지 첨부하기

2025-03-10 |

Spatie laravel media library 라라벨 이미지 첨부하기

라라벨 미디어 라이브러리

Spatie Laravel media library 패키지 설치

아래 명령을 이용해 Spatie laravle media library 패키지를 설치해준다.

composer require "spatie/laravel-medialibrary"

마이그레이션 파일 생성

media 테이블을 생성해주려면 마이그레이션 파일이 필요하다. 아래 명령을 통해 마이그레이션 파일을 생성하면, 다른 테이블과 연계하여 처리할 수 있도록 설정된 마이그레이션 파일이 생성된다.

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"

Media 테이블 생성

이제 마이그레이션을 적용해 media 테이블을 만들어준다.

php artisan migrate

연결할 모델 설정

이제 이미지와 연결할 모델을 설정해주어야 한다. 지금 경우엔 블로그 포스트에 이미지 첨부 기능을 추가할 것이기 때문에, Post 모델과 연결해준다. Post 모델은 이미 생성되어있는 상태이다.

// app/Models/Post.php
<?php

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\Image\Enums\Fit;
use Spatie\MediaLibrary\MediaCollections\Models\Media;

class Post extends Model implements HasMedia // 필요
{
  // 필요
  use InteractsWithMedia;
}

Post 모델 클래스에 implements로 HasMedia를 구성해주고, use interactWithMedia를 선언해 사용할 준비를 갖춘다. 이 선언을 통해 Media 테이블이 Post 테이블과 관계가 형성되어 유연하게 동작한다.

구성파일 생성

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-config"

이미지 최적화를 도와주는 이미지 처리 패키지 설치

composer require spatie/laravel-image-optimizer
sudo apt install jpegoptim optipng pngquant gifsicle libavif-bin
npm install -g svgo #또는 아래 옵션
sudo snap install svgo #npm 패키지 대신 선택 가능
배현기
baehyunki

프론트엔드 웹 개발과 HTML 템플릿 제작, 3D 일러스트레이션 / 아이콘 제작을 하고 있습니다. 블로그에는 공부한 내용들을 정리하고 있습니다.

문의를 남겨주세요

최대한 빠른 시간에 답변드리겠습니다.

또는텔레그램으로도 문의를 남기실 수 있습니다.