PHP试题网_中国最大的免费网络PHP试题测试平台,PHP试卷调查,PHP试卷模板、PHP考试测验
公告: 【20201211】公告:复杂试卷成功上线,问答模块很快上线……网站将有诸多变化

要想保存为中文文件名,首先,我们要了解一下操作系统的编码:当前我们用的windows系统简体中文版,编码为gb2312;而linux系统用的编码为utf-8。回显给浏览器时要统一用utf-8编码,就这么简单。

注明:以下代码在dolphin框架上测试通过。其实原理都一样的,我在wordpress上也用hackdownload-manager上也测试通过。

具体步骤:

1、修改文件:application/admin/controller/Attachment.php第256行为:

        $info = $file->move(config('upload_path') . DS . $dir, false);//红色为添加的

2、修改文件:thinkphp/library/think/File.php。请添加以下红色文字。

找到setSaveName方法:将中文文件名转为utf-8输出给浏览器,
        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
            $saveName = iconv('gb2312', 'utf-8',$saveName);
        }
        $this->saveName = $saveName;

 

约366行:
        $saveName = $this->buildSaveName($savename);
        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
                        $saveName = iconv('utf-8','gb2312//IGNORE', $saveName);
        }

 

 

约442行:
        } elseif ('' === $savename || false === $savename) {
            $savename = date('Ymd') . DS . $this->getInfo('name');//将上传的中文文件名保存规则和不使用中文文件名保存规则一致
        }
 

修改完以上两个文件,相信你已经能够看到中文文件可以正常上传且保存为中文文件了。效果:

 

来,show一个:http://iz7z8.net/uploads/images/20180326/FCKeditor2.6_远程下载图片_强制删除文件_文件重命名_显示中文文件名多功能完整版%20-0.jpg

就是你看到的这个图片了:


作者:OK兄 浏览次数:399