用于检查没有和扩展的文件是否真的是目录或文件的PHP代码

时间:2016-09-16 13:13:13

标签: php

我想检查根目录中的文件扩展名,并检查是否有任何文件夹或图像,但我在用户上传没有扩展名的文件时出现问题,表明它是一个文件夹,文件将无法打开,因为实际上不是文件夹。

示例用户上传了一个名为Makefile的文件,并在make文件中包含了这样的咖啡脚本代码

WORKER_JS_TARGET = build/worker.js WORKER_JS_SOURCES = \ src/js/json2.js \ src/js/worker.coffee.js \ //and more.....

在同一目录中,他还有名为Loader的文件夹和文件box.php,所以现在 Loader 显示为文件夹,没关系, box.php 显示为文件并且可以,但 Makefile 显示为文件夹,但不是文件夹,我该怎么办?

<?php
$filename = 'datafile'
$extn=pathinfo($filename, PATHINFO_EXTENSION);

// Prettifies file type
switch ($extn){

case "txt": $extn="Text File"; break;
case "log": $extn="Log File"; break;
case "htm": $extn="HTML File"; break;
case "html": $extn="HTML File"; break;
case "xhtml": $extn="HTML File"; break;
case "shtml": $extn="HTML File"; break;
case "php": $extn="PHP Script"; break;
case "js": $extn="Javascript File"; break;
case "css": $extn="Stylesheet"; break;

default: if($extn!=""){
$extn = strtoupper($extn)." File";
} else if(!is_dir($name)){
$extn = "Other"; // After i pass this condition to check if is dir it show both Makefile and Loader as Other
}else if(is_dir($name)){
$extn = "Directory";
} else{
$extn = "Unknown";
} break;
}
?>

关于如何做到这一点的任何想法都可以吗?

1 个答案:

答案 0 :(得分:1)

在这段代码中,您从我从给定上下文中获取的内容中检查变量$name而不是$filename

} else if(!is_dir($name)){ //should be $filename
$extn = "Other"; 
}else if(is_dir($name)){ //should be $filename
$extn = "Directory";
} else{