а вы делаете кашу из http, файлов, хранилищ, репозиториев и всего прочего
вы меня точно не так поняли)
есть апи, принимающий запросы (из браузера, ажаксом), у которого есть, скажем, 3 метода - upload, get и delete.
соответственно, при запросе на /upload и наличием файла в массиве $_FILES должна произвестись загрузка файла на сервер и сохранение названия\пути\остального в базу.
в методе апи upload производится проверка, что пришел действительно файл, после этого вызывается Manager->store($file).
внутри store() происходит примерно следующее:
/** @var File */
$uploadedFile = $this->storage->upload($file);
/* сохранение данных из $uploadedFile в базу */
внутри $this->storage->upload() идёт уже процесс создания файла:
валидация (размер, майм)
создание сабдиректорий для этого файла
сам move_uploaded_file
создание объекта File и заполнение свойств
потом этот объект возвращается