从mwstore:// URI获取Mediawiki文件位置

时间:2019-05-08 23:22:48

标签: php mediawiki

我有一个Mediawiki扩展,可以挂接到文件上载。从其中可以获取图像缩略图的位置,但只能作为mwstore URI。我假设有一个函数可以将类似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/
    }
}

这仅在内部运行,因此我可以对路径进行硬编码并分开mwstore URI,但我宁愿以正确的方式做事!

1 个答案:

答案 0 :(得分:0)

getThumbnails()为您提供已生成的缩略图。这并不是真正有用的,尤其是在上传时。您可能正在寻找LocalFile::transform()

也就是说,我认为查找存储路径的方式应该是

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

返回FSFile(具有getPath()方法,返回文件系统路径)。

FWIW,文件对象,即使是LocalFile,从存储在磁盘上的意义上也不一定是本地的,其缩略图也是如此。例如,您的存储后端可能是某种云服务。在这种情况下,getLocalReference()将在本地复制(并且价格昂贵)。