PHP code example of elamed123 / laravel-temp-media
1. Go to this page and download the library: Download elamed123/laravel-temp-media library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
elamed123 / laravel-temp-media example snippets
use Medox\LaravelTempMedia\Contracts\TempMediaServiceInterface;
class MediaController extends Controller
{
public function upload(Request $request, TempMediaServiceInterface $tempMediaService)
{
$file = $request->file('file');
$sessionId = $request->input('session_id', session()->getId());
$result = $tempMediaService->uploadTempMedia($file, $sessionId);
return response()->json($result->toJsonResponse());
}
}
use Medox\LaravelTempMedia\Traits\HandlesTempMedia;
use Medox\LaravelTempMedia\DTOs\TempMediaTransferDTO;
use Medox\LaravelTempMedia\DTOs\TempMediaItemDTO;
use Spatie\MediaLibrary\HasMedia;
class Post extends Model implements HasMedia
{
use HandlesTempMedia;
public function attachTempMedia(array $tempMediaIds, string $collectionName = 'images')
{
$items = array_map(
fn($id) => new TempMediaItemDTO($id),
$tempMediaIds
);
$transferDto = new TempMediaTransferDTO($items);
return $this->transferTempMedia($transferDto, $collectionName);
}
}
use Medox\LaravelTempMedia\Contracts\MediaTransferServiceInterface;
use Medox\LaravelTempMedia\DTOs\TempMediaTransferDTO;
use Medox\LaravelTempMedia\DTOs\TempMediaItemDTO;
class PostController extends Controller
{
public function store(Request $request, MediaTransferServiceInterface $transferService)
{
$post = Post::create($request->validated());
$tempMediaIds = $request->input('temp_media_ids', []);
$items = array_map(
fn($id) => new TempMediaItemDTO($id),
$tempMediaIds
);
$transferDto = new TempMediaTransferDTO($items);
$result = $transferService->transferTempMediaToModel($post, $transferDto, 'images');
return response()->json([
'post' => $post,
'media_transfer' => $result->toArray()
]);
}
}
use Medox\LaravelTempMedia\Contracts\TempMediaServiceInterface;
use Medox\LaravelTempMedia\Contracts\MediaTransferServiceInterface;
// Clean up expired media
$expiredCount = app(TempMediaServiceInterface::class)->cleanupExpired();
// Clean up processed media
$processedCount = app(MediaTransferServiceInterface::class)->cleanupProcessedTempMedia();
use Medox\LaravelTempMedia\Events\TempMediaUploaded;
Event::listen(TempMediaUploaded::class, function (TempMediaUploaded $event) {
// Handle upload event
Log::info('Media uploaded', ['id' => $event->tempMedia->id]);
});
use Medox\LaravelTempMedia\Events\MediaTransferred;
Event::listen(MediaTransferred::class, function (MediaTransferred $event) {
// Handle transfer event
Notification::send($event->targetModel->user, new MediaTransferredNotification());
});
use Medox\LaravelTempMedia\Events\TempMediaExpired;
Event::listen(TempMediaExpired::class, function (TempMediaExpired $event) {
// Handle expiration event
Log::info('Media expired', ['id' => $event->tempMedia->id]);
});
use Medox\LaravelTempMedia\Tests\TestCase;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
class TempMediaUploadTest extends TestCase
{
public function test_can_upload_temporary_media()
{
Storage::fake('public');
$file = UploadedFile::fake()->image('test.jpg');
$response = $this->postJson('/api/v1/temp-media', [
'file' => $file
]);
$response->assertStatus(201)
->assertJsonStructure([
'success',
'data' => [
'id',
'url',
'original_name',
'mime_type',
'size',
'expires_at',
'is_temporary'
]
]);
}
}
$items = [
new TempMediaItemDTO('temp-id-1', 1), // First position
new TempMediaItemDTO('temp-id-2', 2), // Second position
new TempMediaItemDTO('temp-id-3', 3), // Third position
];
$transferDto = new TempMediaTransferDTO($items);
// In config/temp-media.php
'generate_conversions' => true,