Larupload
  • 🏁Getting Started
    • Introduction
    • Installation
    • Laravel Nova integration
    • Support Us
    • License
  • 🚀Basic Usage
    • Database Preparation
    • Model Preparation
    • Upload
  • ⚙️Advanced Usage
    • Concepts
    • Configuration
      • Disk
      • Local Disk
      • Mode
      • SecureIds
      • With Meta
      • Camel Case Response
      • Hide Table Columns
      • Naming Method
      • Lang
      • Image Processing Library
      • Generate Cover
      • Cover Style
      • Dominant Color
      • Dominant Color Quality
      • Keep Old Files
      • Preserve Files
      • Store Original File Name
      • Optimize Image
      • FFMpeg
        • FFMpeg Binaries
        • FFMpeg Threads
        • FFMpeg Capture Frame
        • FFMpeg Queue
        • FFMpeg Max Queue Number
        • FFMpeg Timeout
        • FFMPEG Log Channel
    • Attachment
      • Disk
      • With Meta
      • Naming Method
      • Lang
      • Image Processing Library
      • Generate Cover
      • Cover Style
      • Dominant Color
      • Dominant Color Quality
      • Keep Old Files
      • Preserve Files
      • Store Original File Name
      • SecureIds Method
      • Optimize Image
      • Media Styles
      • Complete Example
    • Migrations
      • Heavy Columns
      • Light Columns
      • Add Original File Name to Existing Tables
  • Upload
  • Delete
  • Cover
    • Upload Cover
    • Update Cover
    • Delete Cover
  • Download
    • Generate Download Link
      • Generate URL for particular style
      • Generate URL for all styles
    • Generate Download Response
  • Meta
  • Get Attachments
  • API Resources
  • Image Optimization
  • SecureIds
  • Queue FFMpeg Processes
    • Job Completion Event
    • FFMpeg Queue Relationships
  • 🧱Standalone Uploader
    • Introduction
    • Upload
    • Delete
    • Cover
      • Update Cover
      • Delete Cover
    • Customization
  • ⚪OTHER
    • Migration
Powered by GitBook
On this page
Edit on GitHub
  1. Advanced Usage
  2. Attachment

Complete Example

<?php

namespace App\Models;

use FFMpeg\Format\Audio\Flac;
use FFMpeg\Format\Audio\Mp3;
use FFMpeg\Format\Audio\Wav;
use FFMpeg\Format\Video\X264;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Mostafaznv\Larupload\Enums\LaruploadImageLibrary;
use Mostafaznv\Larupload\Enums\LaruploadMediaStyle;
use Mostafaznv\Larupload\Enums\LaruploadMode;
use Mostafaznv\Larupload\Enums\LaruploadNamingMethod;
use Mostafaznv\Larupload\Enums\LaruploadStyleMode;
use Mostafaznv\Larupload\Enums\LaruploadSecureIdsMethod;
use Mostafaznv\Larupload\Storage\Attachment;
use Mostafaznv\Larupload\Traits\Larupload;


class Media extends Model
{
    use Larupload;

    public function attachments(): array
    {
        return [
            Attachment::make('main_file')
                ->disk('local')
                ->withMeta(true)
                ->namingMethod(LaruploadNamingMethod::HASH_FILE)
                ->lang('fa')
                ->imageProcessingLibrary(LaruploadImageLibrary::GD)
                ->generateCover(false)
                ->dominantColor(true)
                ->dominantColorQuality(5)
                ->keepOldFiles(true)
                ->preserveFiles(true)
                ->secureIdsMethod(LaruploadSecureIdsMethod::ULID)
                ->optimizeImage(true)
                ->coverStyle('cover', 400, 400, LaruploadMediaStyle::CROP)
                ->image('thumbnail', 250, 250, LaruploadMediaStyle::AUTO)
                ->image('crop_mode', 1100, 1100, LaruploadMediaStyle::CROP)
                ->image('portrait_mode', 1000, 1000, LaruploadMediaStyle::SCALE_WIDTH)
                ->audio('audio_wav', new Wav())
                ->audio('audio_flac', new Flac())
                ->audio('audio_aac', new Aac())
                ->audio(
                    name: 'audio_mp3',
                    format: (new Mp3())->setAudioKiloBitrate(192)->setAudioChannels(2)
                )
                ->video('thumbnail', 250, 250, LaruploadMediaStyle::AUTO)
                ->video('crop_mode', 1100, 1100, LaruploadMediaStyle::CROP)
                ->video('portrait_mode', 1000, 1000, LaruploadMediaStyle::SCALE_WIDTH)
                ->video(name: 'mp3', format: new Mp3)
                ->video(
                    name: 'auto',
                    width: 300,
                    height: 190,
                    mode: LaruploadMediaStyle::AUTO,
                    format: (new X264)
                        ->setKiloBitrate(1000)
                        ->setAudioKiloBitrate(64)
                )
                ->stream(
                    name: '480p',
                    width: 640,
                    height: 480,
                    format: (new X264)
                        ->setKiloBitrate(3000)
                        ->setAudioKiloBitrate(64)
                )
                ->stream(
                    name: '720p',
                    width: 1280,
                    height:  720,
                    format: (new X264)
                        ->setKiloBitrate(1000)
                        ->setAudioKiloBitrate(64)
                )

            Attachment::make('other_file', LaruploadMode::LIGHT)
                ->stream(
                    name: '480p',
                    width: 640,
                    height: 480,
                    format: (new X264)
                        ->setKiloBitrate(3000)
                        ->setAudioKiloBitrate(64)
                        ->setAudioChannels(1)
                        ->setAudioCodec('libmp3lame')
                ),
        ];
    }
}
PreviousMedia StylesNextMigrations

Last updated 4 months ago

⚙️