php 上传文件 判断 文件类型 我 现在 想 上传 一个 csv 文件,在 php 里 怎么 判断 这个 文件 类型 是 csv 的呢?注:除了 判断 扩展名 之外,还有 什么 判段 的 方法?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个 也和 扩展名 有关把,我的意思 是说 和扩展名 没有关系,即使是把 一个 图片 改成 .csv 的 也可以检查出来,上传的文件 格式 不正确 这个是MIME类型,和扩展名无关的。 学习了对 这个 不是 很熟 ,但是 我把 一个 png 的 图片 改成 csv 的 上传 时 $_FILES["file"]["type"] 是 csv 网上流传的一个不错的方法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;} 这个 判断 csv 有点勉强。 我认为8楼得方法已经尽最大程度判定了,按照楼主的意思就是上传的文件如何判定其内容是不是csv格式的(不相信扩展名),那就只能获取文件里面内容,并根据里面内容的形式判定是不是csv文件,但是这种办法是要在后台实现的,也就是说此时文件已经上传了,上传了再判定就没有什么用了。所以,个人认为,不上传,还要判断内容形式,没什么好的解决办法。 我的 意思是 csv 不是 用 , 这个 隔开的 文件 吗 aa,bb,cc,ddee,ff,gg,hh类似 这样的 文件 按 8楼 的 说法 这个 文件 的 typeCode=131112可是 aa,"bb",cc,ddee,ff,gg,hh这个 样子 也 是正确 的 csv 格式 类型 但是 这个 文件 的 typeCode=105105可能 还有 其他的 属于 csv 格式 类型 的 文件 但是 不是 这两个 typeCode ,8楼的 就没有 办法 判断了 不太清楚,不过你也不必一定就两个字节的,你可以按其他方式试一试,至于其他的csv类型的不是那两个typeCode,那么你可以将他们记载下载放到程序中,毕竟一开始jpg也是这样记载下来的,呵呵 截取字符串,然后放进数组里面 哪位大侠能够一条sql语句执行更新多条记录 正则表达式 php中,如何将时间类型转换成整形(存入数据库) 为什么我的JavaScript检验表单什么反应都没有? php的引用,到底有什么用阿? php正则问题 MySQL里面的text字段,显示的有问题! phpmyadmin如何安装? 怎么取XML的值呢?高手救救我。。。 Apache同一目录下html显示正常,php304拒绝显示 简单的问题
我的意思 是说 和扩展名 没有关系,即使是把 一个 图片 改成 .csv 的 也可以检查出来,上传的文件 格式 不正确
对 这个 不是 很熟 ,但是 我把 一个 png 的 图片 改成 csv 的 上传 时 $_FILES["file"]["type"] 是 csv
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;
}
ee,ff,gg,hh类似 这样的 文件
按 8楼 的 说法 这个 文件 的 typeCode=131112
可是 aa,"b
b",cc,dd
ee,ff,gg,hh这个 样子 也 是正确 的 csv 格式 类型 但是 这个 文件 的 typeCode=105105
可能 还有 其他的 属于 csv 格式 类型 的 文件 但是 不是 这两个 typeCode ,8楼的 就没有 办法 判断了