要想保存爲中文文件名,首先,我們要了解一下操作系統的編碼:當前我們用的windows系統簡體中文版,編碼爲gb2312;而linux系統用的編碼爲utf-8。回顯給瀏覽器時要統一用utf-8編碼,就這麼簡單。
1、修改上傳文件:
$imgName = "加油";
$info = $file->validate(['size'=>10240000])->move( '../public/signImgs/',$imgName);
2、修改文件:thinkphp/library/think/File.php。請添加以下紅色文字。
找到setSaveName方法:將中文文件名轉爲utf-8輸出給瀏覽器,大約在127行,加入
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$saveName = iconv('gbk', 'utf-8',$saveName);
}
$this->saveName = $saveName;
在364行加入:
$saveName = $this->buildSaveName($savename);
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$saveName = iconv('utf-8','gbk//IGNORE', $saveName);
}
然後再試一下,看看是不是可以上傳了呢