file_exist函数不支持中文文件名解决方法
增加了一句将UTF8编码转换为GB2312编码的语句,改进后可以了正确判断了: $file_dir=iconv(‘UTF-8’,‘GB2312’, $file_dir);
下面展示一些
内联代码片
。
$file_dir = dirname(dirname(dirname(__DIR__)))."/public/upload/files/".$input['title'].".".$input['type'];
//将UTF8编码转换为GB2312编码
$file_dir=iconv('UTF-8','GB2312', $file_dir);
// 检查文件是否存在
if (!file_exists($file_dir)) {
$this->error('文件未找到');
} else {
// 打开文件
$file1 = fopen($file_dir, "r");
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:" . filesize($file_dir));
Header("Content-Disposition: attachment;filename=" . $input['title'] .".".$input['type']);
ob_clean();
flush(); //可以清除文件中多余的路径名以及解决乱码的问题:
//输出文件内容
//读取文件内容并直接输出到浏览器
echo fread($file1, filesize($file_dir));
fclose($file1);
exit();
}