概述
公司内部的wiki是用的mediawiki,其它都还好就是上传文件时文件名中有中文就不能上传,这次下决心要修复这个问题,一开始我还以为是哪里需要配置一下,然后搜了半天发现这是一个官方的bug:
好吧,是官方bug也好,官方肯定也提供了解决方案,链接在这,找了半天确实有人给出了详细的解决方案:
注意我标红的几个地方,就是说要改四个地方,然后注意用中文的编码集(中文的就是GBK,不要去百度了),而不是他示例的windows-1255,好了废话不多说,我把这四个地方改完重新用中文描述下:
1.找到MediaWiki/includes/upload/UploadBase.php文件,搜索WINDOWS_NONASCII_FILENAME,将这一段if else代码整个注释
2.找到MediaWiki/includes/filebackend/ FSFileBackend.php,搜索 doStoreInternal方法,将下面一段代码加到$ok = copy( $params['src'], $dest );之前:
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
{
$charSetArr = array("ASCII", "JIS", "EUC-JP", "UTF-8", "UTF-16","windows-1251","ISO-8859-1", "GBK");
if (mb_detect_encoding($dest, $charSetArr) =="UTF-8")
{
$dest = iconv("UTF-8", "GBK", $dest);
}
}
3.找到MediaWikiincludesfilerepofileFile.php,搜索transform方法,将下面一段代码加到$thumbPath = $this->getThumbPath( $thumbName ); // final thumb path 之后:
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
{
$charSetArr = array("ASCII", "JIS", "EUC-JP", "UTF-8", "UTF-16","windows-1251","ISO-8859-1", "GBK");
if (mb_detect_encoding($thumbPath, $charSetArr) =="UTF-8")
{
$thumbPath = iconv("UTF-8", "GBK", $thumbPath);
}
}
4.找到 MediaWikiincludesmediaBitmap.php,搜索transformGd方法,将下面一段代码加到if ( !file_exists( $params['srcPath'] ) ) 之前:
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
{
$charSetArr = array("ASCII", "JIS", "EUC-JP", "UTF-8", "UTF-16","windows-1251","ISO-8859-1", "GBK");
if (mb_detect_encoding($params['srcPath'], $charSetArr) =="UTF-8")
{
$params['srcPath'] = iconv("UTF-8", "GBK", $params['srcPath']);
}
}
好了,到此大功告成,我这里使用的版本是1.30,其它版本应该也差不多,不过据说官方版本1.31已经解决了这个bug了,重新下的话也就没这个烦恼了。。
最后
以上就是清新缘分为你收集整理的解决mediawiki上传文件文件名是中文上传失败的全部内容,希望文章能够帮你解决解决mediawiki上传文件文件名是中文上传失败所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复