我有一个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,但我宁愿以正确的方式做事!
答案 0 :(得分:0)
getThumbnails()
为您提供已生成的缩略图。这并不是真正有用的,尤其是在上传时。您可能正在寻找LocalFile::transform()
。
也就是说,我认为查找存储路径的方式应该是
FileBackendGroup::singleton()->backendFromPath( $path )
->getLocalReference( [ 'src' => $path ] );
返回FSFile(具有getPath()
方法,返回文件系统路径)。
FWIW,文件对象,即使是LocalFile,从存储在磁盘上的意义上也不一定是本地的,其缩略图也是如此。例如,您的存储后端可能是某种云服务。在这种情况下,getLocalReference()
将在本地复制(并且价格昂贵)。