File "MediaController.php"

Full Path: /var/www/html/back/app/Http/Controllers/Api/V1/MediaController.php
File size: 1.29 KB
MIME-type: text/x-php
Charset: utf-8

<?php

declare(strict_types=1);

namespace App\Http\Controllers\Api\V1;

use App\Attributes\OpenApiResponse;
use App\Http\Controllers\Api\ApiController;
use App\Models\Media;
use App\Responses\ResponseDto;
use Illuminate\Http\Request;
use Knuckles\Scribe\Attributes\Group;

/**
 * Контроллер для работы с временными файлами в media
 */
class MediaController extends ApiController
{
    /**
     * Загрузка временного файла
     *
     * @queryParam files[]
     */
    #[Group('media')]
    #[OpenApiResponse(ResponseDto::class)]
    public function uploadTemporary(Request $request): ResponseDto
    {
        $request->validate([
            'files' => 'required|array',
            'files.*' => 'file|max:10240', // Макс. 10МБ для каждого файла
        ]);

        $uploadedFiles = [];

        foreach ($request->file('files') as $file) {
            $originalName = $file->getClientOriginalName();
            $path = $file->storeAs('temp/', basename($originalName), 'public');

            $uploadedFiles[] = [
                'path' => $path,
                'original_name' => $originalName
            ];
        }

        return new ResponseDto(
            data: $uploadedFiles,
            status: true
        );
    }

}