PHP中file_exists()函数不能检测包含中文的文件名的解决办法
来源:互联网 发布:木子软件福利 编辑:程序博客网 时间:2024/05/20 04:51
PHP中一般使用file_exists()判断某个文件或者文件夹是否存在,如果文件或文件夹存在则返回true,不存在则返回false。今天在实现文件下载功能时发现,在网页使用UTF8编码的情况下,该函数无法检测包含中文的文件是否存在,始终返回false。修改很久之后才发现是因为没有把完整路径进行编码的原因,仅仅对文件名进行转码是不够的。
下面的代码无法检测包含中文的文件是否存在,无论文件是否在都返回false:
<?php; $file='../uploads/file/中文.pdf'; // 在../uploads/file/文件夹中 中文.pdf 实际存在 echo file_exists($file); //输出为false ?>
仅仅对文件名进行转码也不行,这是我遇到的这种情况,需要把【路径+文件名】一起转码才可以
<?php $file= '中文.pdf'; // 在../uploads/file/文件夹中 中文.pdf 实际存在 $file=iconv('UTF-8','GB2312',$file); echo file_exists('../uploads/file/' . $file); //输出为false?>
实际上,只要把文件路径与文件名字从UTF8编码转换为GB2312编码,改进后就可以准确判断了:
<?php $file='../uploads/file/中文.pdf'; // 在../uploads/file/文件夹中 中文.pdf 实际存在 $file=iconv('UTF-8','GB2312',$file); echo file_exists($file); //输出为true?>
1 0
- PHP中file_exists()函数不能检测包含中文的文件名的解决办法
- php上传文件名中包含中文字符的附件
- PHP中file_exists函数不支持中文名的解决方法
- php中fopen不能创建中文文件名文件的问题
- php的filesystem相关function+utf-8的编码+windows时不支持中文文件名(如unlink,file_exists)
- PHP的file_exists函数不支持UTF-8编码下的中文文件目录路径
- PHP中is_file,file_exists的区别,is_file 不能替代file_exits的理由
- PHP中is_file,file_exists的区别,is_file 不能替代file_exits的理由
- PHP Json函数不能处理中文的解决办法
- 解决PHP file_exists 函数不支持中文文件
- php mysql不能插入中文的解决办法
- php程序中不能使用mb_开头的函数解决办法
- 检测文件名中是否包含中文或空格
- php file_exists无效解决办法
- php中is_file与file_exists的性能对比
- PHP中is_file与file_exists的区别详解
- PHP中file_exists与is_file,is_dir的区别
- PHP中file_exists与is_file,is_dir的区别介绍
- POJ 2029 递推
- Android 简单仿qq空间时间显示
- (OK) 编译cBPM-CentOS7-codeblocks
- html5-文件
- 根据一个给定经纬度的点,进行附近地点查询
- PHP中file_exists()函数不能检测包含中文的文件名的解决办法
- 五大开源Web服务器
- Java基础------知识点整理(九)-----异常
- (OK) cBPM(段错误(吐核))—((EndWorkflowEvent*)evt)->getProcessID()—getenv 返NULL
- codeblocks基本调试方法—gdb—Debugger
- python备忘录
- (OK) CentOS 7—adb—android-sdk_r24.3.3-linux.tgz
- java获取当前时间的年周月季度等的开始结束时间
- cBPM调试——codeblocks 配置交叉编译和调试环境