PHP 获取上传文件的实际类型
方案一:
mime_content_type ( string $filename ) : string
(PHP 4 >= 4.3.0, PHP 5, PHP 7)mime_content_type — 检测文件的 MIME 类型/**
* 文件扩展名说明(部分)
* 3780 pdf
* 7173 gif
* 255216 jpg
* 13780 png
* 6677 bmp
* 8075 docx
* 208207 doc
*/
public function checkFileType($file = '', $ext = '')
{//$file=$_FILE['file']['tmp_name'];
$limitType = ['3780', '7173', '255216', '13780', '6677', '208207'];
$fp = fopen($file, "rb");
$bin = fread($fp, 2); //只读2字节
fclose($fp);
// unpack() 函数从二进制字符串对数据进行解包
$str_info = @unpack("C2chars", $bin);
// intval() 函数用于获取变量的整数值
$type_code = intval($str_info['chars1'] . $str_info['chars2']);
if (!in_array($type_code, $limitType)) {
Response::apiError('上传的文件类型不符合要求');
}
$file_type = '';
switch ($type_code) {
case 3780:
$file_type = 'pdf';
break;
case 7173:
$file_type = 'gif';
break;
case 255216:
$file_type = 'jpg';
break;
case 13780:
$file_type = 'png';
break;
case 6677:
$file_type = 'bmp';
break;
case 8075:
$file_type = 'docx';
break;
case 208207:
$file_type = 'doc';
break;
default :
$file_type = 'unKnown';
}
if ($file_type != $ext) {
Response::apiError('请不要试图修改上传文件后缀名,否则文件无法正常显示,源文件后缀应为:.' . $file_type);
}
}
PHP 获取上传文件的实际类型的更多相关文章
- java动态获取上传文件的编码类型
package com.sjfl.main; import java.io.BufferedReader; import java.io.File; import java.io.FileInputS ...
- Atitit.js获取上传文件全路径
Atitit.js获取上传文件全路径 1. 默认的value只能获取文件名..安全原因.. 1 2. Firefox浏览器的读取 1 3. Html5 的file api 2 4. 解决方法::使用a ...
- ie下获取上传文件全路径
ie下获取上传文件全路径,3.5之后的火狐是没法获取上传文件全路径的 /*获取上传文件路径*/ function getFilePath(obj) { var form = $(this).paren ...
- JS获取上传文件的绝对路径,兼容IE和FF
<input type="file" id="fileBrowser" name="fileBrowser" size="5 ...
- js获取上传文件内容(未完待续)
js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...
- PHP使用APC获取上传文件进度
今天发现使用PHP的APC也能获取上传文件的进度.这篇文章就说下如何做. 安装APC 首先安装APC的方法和其他PHP模块的方法没什么两样,网上能找出好多 phpinfo可以看到APC的默认配置有: ...
- js获取上传文件内容
js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...
- struts2文件上传时获取上传文件的大小
利用struts2框架上传文件时,如果想要获取上传文件的大小可以利用下面的方式进行: FileInputStream ins = new FileInputStream(file); if (ins. ...
- 前台提交数据(表单数据、Json数据及上传文件)的类型
MIME (Multipurpose Internet Mail Extensions) 是描述内容类型的互联网标准.Clients use this content type or media ty ...
随机推荐
- uwp,c#,全屏播放保持屏幕响应
在开发视频app的时候,全屏播放一段时间内没有电脑操作,电脑会自动进入睡眠模式,这时就要多写些代码来保持响应了. (这里使用的是MediaElement播放控件,MediaElement需要手动添加代 ...
- 深度图转伪彩色图(python)
kinect得到的深度图灰不拉几,人眼很难识别出其中的物体,感知深度的变化. 在做展示的时候,我们往往需要可视化,使用OpenCV的预定义的颜色映射来将灰度图像伪彩色化,在OpenCV中使用apply ...
- web平台大数据请求传输性能处理
在XMLHttpRequest请求中使用ArrayBuffer方式,和后端服务器进行二进制的传输交互. 在项目中发现随着用户增长,部分前端功能,请求的数据量越来越大,传统的josn的方式,在下载.序列 ...
- (九)Javabean与Jsp(来自那些年的笔记)
目录 JavaBean 在JSP中使用JavaBean 标签用法 带标签体的 JavaBean 标签 setProperty 标签 getProperty 标签 JSP开发模式 案列:使用 模式一 编 ...
- TCP状态转换(图解+文字解说)
<深入分析 javaweb 技术内幕>P38 读书扩展 作者:淮左白衣 写于2018年4月12日20:58:36 目录 TCP状态转换图解 图解三次握手 文字讲解三次握手: 图解四次挥手 ...
- Office 2016、2019 与 Office 365 的区别
点开观看更清晰:
- 剑指offer36:两个链表的第一个公共结点
1 题目描述 输入两个链表,找出它们的第一个公共结点. 2 思路和方法 方法一: 用两个指针同时从两个链表的表头开始走,当走到自己的链表结尾的时候开始从另一个链表的表头开始向后走.终止条件就是两个指针 ...
- jira索引失败
""" # 参考:http://www.mamicode.com/info-detail-2369087.html jira断电重启后索引失败, 解决方法: 关闭jira ...
- Linux Mysql 备份与还原
1. 备份 cd /var/lib/mysql //进入到MySQL库目录 mysqldump -u root -p 数据库>/root/backup/数据库.sql 然后输入密码 2. 还原 ...
- 点标记(lambda表达式+linq查询标记符)与linq语句(查询表达式)
什么是Linq表达式?什么是Lambda表达式? 参照:https://www.cnblogs.com/zhaopei/p/5746414.html