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 ...
随机推荐
- CDH6.2的fair-scheduler.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><alloc ...
- [转帖]前端 crypto-js aes 加解密
前端 crypto-js aes 加解密 2018.04.13 11:37:21字数 891阅读 59767 https://www.jianshu.com/p/a47477e8126a 原来前端也有 ...
- ftp操作命令
原文:https://www.cnblogs.com/tssc/p/9593614.html 1.登陆ftp服务器 ftp [IP] [PORT] # 登陆ftp服务器,本机登陆可以不写IP实例演示: ...
- 《Mysql - 事务 MVCC》
一:前言 - 前面通过 <Mysql 事务 - 隔离> 的学习,知道了事务的实现,是根据 获取一致性视图 来实现的. 二:那么,什么时候会获取到一致性视图呢? - 例如:有三个事务,启动的 ...
- Win10 鼠标右键新建菜单添加自定义文件
1. 引言 在鼠标右键(右单机)新建菜单中添加自定义文件,例如:写字板,markdown等. 效果图: 2. 操作步骤(以Win10为例) 1. win+R输入regedit进入注册表 2. 这里以添 ...
- C++:链表(初识链表)
介绍 链表是把若干个对象用指针串联起来,形成一个链状的数据结构,链表在开发中很重要. 1.链表特征:只需要知道一个链表头,就能访问每个节点的对象. 2.链表遍历:通过每个节点指针next来对的下一个节 ...
- Python 中文件操作
上代码: import os import os.path rootdir = "d:/code/su/data" # 指明被遍历的文件夹 for parent,dirnames, ...
- js — 字符串
目录 1. 拼接字符串 2. 获取字符的方法 3. 字符串操作方法(切片) 4. 字符串位置方法 - 索引 5. trim()方法 6. 字符串大小写转换方法 字符串 typeof 用于校验当前变量的 ...
- System函数的使用说明
#inlcude<stdlib.h> int system(const char* command) 功能:在已经运行的程序中调用另一个外部程序 参数:外部可执行程序的名字 返回值:不同系 ...
- 使用Duilib开发Windows软件(2)——控件的基本介绍
XML 先学习xml https://www.w3cschool.cn/xml/xml-xml-tutorialhc4o1t5m.html 控件 上图是我们下载的NIM_Duilib_Framewor ...