readfile模式下如何判断文件类型?

大张 2016-08-09 10:17:12
readfile模式下如何判断文件类型,不采用路径扩展名的方法
以下两段代码没法结合在一起吗?

//打开输出缓冲区并获取远程图片
ob_start();
$context = stream_context_create(
array('http' => array(
'follow_location' => false // don't follow redirects
))
);
readfile($imgUrl, false, $context);
$img = ob_get_contents();
ob_end_clean();
preg_match("/[\/]([^\/]*)[\.]?[^\.\/]*$/", $imgUrl, $m);


网上找到这一种,但必须是用二进制 重新打开文件。

function checkFileType($fileName){
$file = fopen($fileName, "rb");
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);// C为无符号整数,网上搜到的都是c,为有符号整数,这样会产生负数判断不正常
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$fileType = '';
if($typeCode == 255216 /*jpg*/ || $typeCode == 7173 /*gif*/ || $typeCode == 13780 /*png*/) {
return true;
}else{
return false;
}
}
...全文
490 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-08-09
  • 打赏
  • 举报
回复
< php5.4 ? echo explode(',',$d)[$t[2]]; 改成 $p = explode(',',$d) echo $p[$t[2]];
大张 2016-08-09
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
$d = ',GIF,JPG,PNG,SWF,PSD,BMP,TIFF,TIFF,JPC,JP2,JPX,JB2,SWC,IFF,WBMP,XBM';
$t = getimagesize('http://avatar.csdn.net/1/8/4/1_hongendazhang.jpg');
echo explode(',',$d)[$t[2]];//JPG
Parse error: syntax error, unexpected '[', expecting ',' or ';' in D:\phpStudy\WWW\00.php on line 4
xuzuning 2016-08-09
  • 打赏
  • 举报
回复
$d = ',GIF,JPG,PNG,SWF,PSD,BMP,TIFF,TIFF,JPC,JP2,JPX,JB2,SWC,IFF,WBMP,XBM';
$t = getimagesize('http://avatar.csdn.net/1/8/4/1_hongendazhang.jpg');
echo explode(',',$d)[$t[2]];//JPG

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧