解决mediawiki上传文件文件名是中文上传失败
公司內部的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.找到MediaWiki\includes\filerepo\file\File.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.找到 MediaWiki\includes\media\Bitmap.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上传文件文件名是中文上传失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学术相关】人工智能顶会审稿现状—理想中
- 下一篇: (建议收藏)相对靠谱的国内大学排行榜