Filament Plugins

Purchase

Programmatic upload

To manually/programmatically upload files into the Media Library, follow the below steps.

Programmatic upload

1

Driver

The first step is to instantiate the appropriate driver. Usually you can retrieve the instantiated driver-object from your panel-plugin:

php

use Filament\Facades\Filament;
use RalphJSmit\Filament\MediaLibrary\FilamentMediaLibrary;
 
$driver = Filament::getPanel('admin')
    ->getPlugin(FilamentMediaLibrary::make()->getId())
    ->getDriver();
2

TemporaryFileUploadData

To add a file to the Media Library, you need to provide the file source as an instance of TemporaryFileUploadData. This object can be instantiated in two ways:

From an UploadedFile instance (for example from a form upload):

app/Http/Controllers/YourMediaLibraryController.php

$uploadedFile = $request->file('item');

$temporaryFileUploadData = TemporaryFileUploadData::fromUploadedFile($uploadedFile);

From a file stored on a disk:

app/Jobs/YourProcessExternalFileJob.php

$temporaryFileUploadData = TemporaryFileUploadData::fromDisk(
    disk: 's3',
    path: 'path/to/file.jpg',
    shouldPreserveOriginalFile: true // Default false, can be set to true if you want to keep the original file on the disk
);
3

Upload

Next, you can add the instantiated file to the Media Library using the createFile method on the driver instance:

php

$fileData = $driver->createFile(
    folder: null, 
    temporaryFileUploadData: $temporaryFileUploadData,
);

// Instance of `RalphJSmit\Filament\Explore\Data\FileData`...

Now the file will show up in your library!

Uploading in a folder

To upload a file to a specific folder, you can instantiate a FileData object for the folder and pass that as the first argument to the createFile() method.

The way you instantiate the $folder depends on your driver:

Media Library Item-driver

use RalphJSmit\Filament\MediaLibrary\Drivers\MediaLibraryItemDriver\FileData;

$folder = FileData::fromMediaLibraryFolder($mediaLibraryFolder);

Storage/disk driver:

use RalphJSmit\Filament\Explore\Drivers\FilesystemStorageDriver\FileData;

$folder = FileData::fromDisk(...);
$folder = FileData::fromSplFileInfo(...);

And then upload like this:

php

$fileData = $driver->createFile(
    folder: $folder, 
    temporaryFileUploadData: $temporaryFileUploadData,
);

Advanced

The entire Media Library can be managed in a programmatic way using the $driver object. This includes upload files, creating folders, moving files, deleting files, renaming files, etc. The below example shows just several of the available methods:

php

$fileData = $driver->createFile($folder, $temporaryFileUploadData);

$fileData = $driver->createFolder($folder, 'New folder');

$driver->deleteFile($fileData);

$driver->moveFile($fileData, $toFolder);

$driver->renameFile($fileData, 'new-name.jpg');

$files = $driver->getFiles($folder, $modifications);

$filesCount = $driver->getFilesCount($folder, $modifications);

$filesPaginator = $driver->getFilesPaginator($folder, $modifications, $page, $perPage);
© FilamentPlugins.com ✦ 2022 – 2025 ✦ All rights reserved.