日期:2014-05-17  浏览次数:20487 次

php 上传文件 判断 文件类型
我 现在 想 上传 一个 csv 文件,
在 php 里 怎么 判断 这个 文件 类型 是 csv 的呢?

注:
除了 判断 扩展名 之外,还有 什么 判段 的 方法??

------解决方案--------------------
$_FILES["file"]["type"]
------解决方案--------------------
探讨

$_FILES["file"]["type"]

------解决方案--------------------
学习了!!!!!!!!!!!!!!!
------解决方案--------------------
楼主非要把简单的事情复杂化。那也没办法!
------解决方案--------------------
网上流传的一个不错的方法
PHP code
function ftype($filename){
    $file    = fopen($filename, "rb");
    $bin    = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo    = @unpack("C2chars", $bin);
    $typeCode    = intval($strInfo['chars1'].$strInfo['chars2']);
    $fileType    = '';
    switch($typeCode){
        case 7790:
            $fileType = 'exe';
            break;
        case 7784:
            $fileType = 'midi';
            break;
        case 8297:
            $fileType = 'rar';
            break;
        case 255216:
            $fileType = 'jpg';
            break;
        case 7173:
            $fileType = 'gif';
            break;
        case 6677:
            $fileType = 'bmp';
            break;
        case 13780:
            $fileType = 'png';
            break;
        default:
            $fileType = 'unknown';
    }
    return $fileType;
}

------解决方案--------------------
我认为8楼得方法已经尽最大程度判定了,按照楼主的意思就是上传的文件如何判定其内容是不是csv格式的(不相信扩展名),那就只能获取文件里面内容,并根据里面内容的形式判定是不是csv文件,但是这种办法是要在后台实现的,也就是说此时文件已经上传了,上传了再判定就没有什么用了。所以,个人认为,不上传,还要判断内容形式,没什么好的解决办法。
------解决方案--------------------
探讨

我的 意思是 csv 不是 用 , 这个 隔开的 文件 吗

aa,bb,cc,dd
ee,ff,gg,hh

类似 这样的 文件
按 8楼 的 说法 这个 文件 的 typeCode=131112
可是

aa,"b
b",cc,dd
ee,ff,gg,hh

这个 样子 也 是正确 的 csv 格式 类型 但是 这个 文件 的 typeCode=105105
……