【发布时间】:2015-03-29 20:15:07
【问题描述】:
我正在为一个照片网站构建一个上传器,上传的大多数照片都是 1232132_1231231_12.jpg 类型的。当我运行 pathinfo() 时,我得到扩展的空白输出。
这是我的代码
$target_dir = "Photos/";
$species = filter_input(INPUT_POST, 'species');
$country = filter_input(INPUT_POST, 'country');
$type= filter_input(INPUT_POST, 'type');
include_once 'connection.php';
echo $target_dir . basename($_FILES["file"]["name"]);
for($a=0;$a<count($_FILES['file']['tmp_name']);$a++)
{
$target_file = $target_dir . basename($_FILES["file"]["name"][$a]);
$imageFileType=pathinfo($target_file, PATHINFO_EXTENSION);
var_dump(pathinfo($target_file));
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" )
{
echo "<br> Sorry, only JPG, JPEG, PNG & GIF files are allowed. your file is a $imageFileType <br>";
}
}
照片/2014-02-21 18.19.08.jpg
echo $target-file;
给出这个输出 Photos/2014-02-21 18.19.08.jpg
对于 var_dump,这会在屏幕上回显, array(3) { ["dirname"]=> string(6) "照片" ["basename"]=> string(1) "2" ["文件名"]=> 字符串(1) "2" }
我的代码有问题还是 pathinfo() 不能很好地处理数字和特殊字符文件名?
是否有另一个函数可以处理这些类型的文件名,或者应该用 '.' 对 $target_file 进行explode()并取返回数组中的最后一个元素?
【问题讨论】:
-
如果将
error_reporting(E_ALL);放在脚本顶部会发生什么? -
请检查链接并阅读标记答案的cmets。stackoverflow.com/questions/10368217/…
-
如果
echo "target_file=$target_file<br />\n";位于 var_dump() 的正上方会发生什么?文件名是“Photos/2”还是“Photos/2.jpg”? -
彼得我已经编辑了问题
标签: php