PHP使用pathinfo分离文件扩展名后生成加密文件名缺失后缀问题
问题原因
你代码的问题出在explode拆分文件名的逻辑错误:
- 你用
pathinfo($file, PATHINFO_EXTENSION)拿到的扩展名$validate值为jpg - 用
jpg作为分隔符拆分原文件名CT0001_0002.1.jpg时,拆分结果为['CT0001_0002.1.', '']两个元素 - 因此
list($name,$extension)接收到的$extension是空值,最终拼接出来的文件名后缀部分就为空
修复方案
无需额外拆分文件名,pathinfo原生支持直接获取不含后缀的文件名和扩展名,修改后代码如下:
$file = 'CT0001_0002.1.jpg'; // PATHINFO_FILENAME 直接返回去掉最后一级后缀的文件名 $name = pathinfo($file, PATHINFO_FILENAME); // PATHINFO_EXTENSION 直接返回文件扩展名 $extension = pathinfo($file, PATHINFO_EXTENSION); $date = date("Y-m-d H:i"); $cod = md5($name.$date).".".$extension; echo $cod;
修改后即可输出符合预期的带后缀的编码文件名。
内容的提问来源于stack exchange,提问作者JM_2021
相关产品推荐
相关产品推荐

