PHP中如何从$_FILES上传数组中提取文件名及对应文件扩展名
解决方案
核心误区说明
你看到的string(23) "2021-05-14_20-59-00.jpg"是var_dump()/var_export()这类调试函数的输出格式,不是$_FILES['picture']['name']的实际值。这个变量本身存储的就是纯文件名字符串,可以直接传入pathinfo处理。
实现代码
直接提取扩展名
// 第一步:获取原始文件名,变量本身就是纯字符串格式 $originName = $_FILES['picture']['name']; // 第二步:用pathinfo提取扩展名 $extension = pathinfo($originName, PATHINFO_EXTENSION); // 此时 $extension 的值就是字符串 "jpg"
同时获取不带后缀的文件名和扩展名
$originName = $_FILES['picture']['name']; $fileInfo = pathinfo($originName); // 不带后缀的文件名:2021-05-14_20-59-00 $pureName = $fileInfo['filename']; // 扩展名:jpg $extension = $fileInfo['extension'];
补充提示
如果是用于上传校验,不要完全依赖文件名后缀,建议同时校验文件的MIME类型、文件头内容,避免恶意脚本修改后缀绕过校验。
内容的提问来源于stack exchange,提问作者Kojak Eugenio
相关产品推荐
相关产品推荐

