Получить расположение файла Mediawiki из mwstore: // URI - PullRequest
0 голосов
/ 09 мая 2019

У меня есть расширение Mediawiki, которое подключается к загрузке файлов.Из него я могу получить расположение миниатюры изображения, но только в виде URI mwstore.Я предполагаю, что есть функция для преобразования чего-то вроде mwstore://local-backend/local-thumb/6/6c/test.png в расположение файловой системы или объекта LocalFile, но я не смог найти его.

public static function fileUploaded(UploadBase $image)
{
    $thumbs = $image->getLocalFile()->getThumbnails();
    if (is_array($thumbs) && count($thumbs)) {
        $thumbnail_directory = $thumbs[0];
        // so now I have mwstore://local-backend/local-thumb/6/6c/test.png
        // how do I get /var/www/html/mediawiki/core/images/thumb/6/6c/test.png/
    }
}

Это выполняется только внутри,так что я мог бы просто жестко прописать путь и взломать URI mwstore, но я бы предпочел сделать все правильно!

1 Ответ

0 голосов
/ 15 июля 2019

getThumbnails() дает вам эскизы, которые уже были созданы.Это не очень полезно, особенно при загрузке.Возможно, вы ищете LocalFile::transform().

Тем не менее, я считаю, что для поиска пути к хранилищу должен быть

FileBackendGroup::singleton()->backendFromPath( $path )
    ->getLocalReference( [ 'src' => $path ] );

, который возвращает FSFile (который имеет getPath()метод, возвращающий путь к файловой системе).

FWIW. Файловые объекты, даже LocalFile, не обязательно являются локальными в том смысле, что они хранятся на диске, а также их миниатюры.Например, вашим хранилищем может быть какой-то облачный сервис.getLocalReference() сделает локальную копию в этом случае (и будет дорого).

...