方案一:

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 获取上传文件的实际类型的更多相关文章

  1. java动态获取上传文件的编码类型

    package com.sjfl.main; import java.io.BufferedReader; import java.io.File; import java.io.FileInputS ...

  2. Atitit.js获取上传文件全路径

    Atitit.js获取上传文件全路径 1. 默认的value只能获取文件名..安全原因.. 1 2. Firefox浏览器的读取 1 3. Html5 的file api 2 4. 解决方法::使用a ...

  3. ie下获取上传文件全路径

    ie下获取上传文件全路径,3.5之后的火狐是没法获取上传文件全路径的 /*获取上传文件路径*/ function getFilePath(obj) { var form = $(this).paren ...

  4. JS获取上传文件的绝对路径,兼容IE和FF

    <input type="file" id="fileBrowser" name="fileBrowser" size="5 ...

  5. js获取上传文件内容(未完待续)

    js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...

  6. PHP使用APC获取上传文件进度

    今天发现使用PHP的APC也能获取上传文件的进度.这篇文章就说下如何做. 安装APC 首先安装APC的方法和其他PHP模块的方法没什么两样,网上能找出好多 phpinfo可以看到APC的默认配置有: ...

  7. js获取上传文件内容

    js 获取上传文件的字节数及内容 <div> 上传文件 : <input type="file" name = "file" id = &qu ...

  8. struts2文件上传时获取上传文件的大小

    利用struts2框架上传文件时,如果想要获取上传文件的大小可以利用下面的方式进行: FileInputStream ins = new FileInputStream(file); if (ins. ...

  9. 前台提交数据(表单数据、Json数据及上传文件)的类型

    MIME (Multipurpose Internet Mail Extensions) 是描述内容类型的互联网标准.Clients use this content type or media ty ...

随机推荐

  1. Longest Line of Consecutive One in Matrix

    Given a 01 matrix, find the longest line of consecutive 1 in the matrix. The line could be horizonta ...

  2. Appium 基于控件左滑操作

    def swipe_ele_left(self, ele, dur=800): """ 基于控件元素左滑操作 :param ele: 控件元素 :param dur: 在 ...

  3. quartz 简单定时器

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  4. 关于 磁盘 I/O 的工作机制那些事

    总有一些你我看不见的东西,存在与你我周围 <深入分析 javaW 技术内幕> 读书感悟 作者 :淮左白衣 写于2018年4月11日19:35:06 写在前面的话 字节与字符的转换桥梁 用户 ...

  5. C++中const关键字用法总结

    看完了c++ primer的基础篇,对const还是有点陌生,在这里小小地总结一下吧. 1) const与变量 在变量的定义前加上 const 修饰符即可完成const对象的创建. const int ...

  6. WebSocket协议探究(一)

    一 复习和目标 1 复习 上一节使用wireshark抓包分析了WebSocket流量 包含连接的建立:HTTP协议升级WebSocket协议 使用建立完成的WebSocket协议发送数据 2 目标 ...

  7. node 和 postgres

    安装 npm i pg ,如果慢的话,记得爬梯子 连接池的方式: var pg = require('pg'); // 数据库配置 var config = { user:"postgres ...

  8. Asp.Net Core 存储Cookie 的问题

    Asp.Net Core 2.1生成的项目模板默认实现了<欧洲常规数据保护法规 (GDPR)>支持.这就使得我们的程序要想成功的存储除了用户身份以外的cookie通常是需要用户同意的. 3 ...

  9. ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2 视图模板页

    https://www.cnblogs.com/xlhblogs/archive/2013/06/09/3129449.html MVC Razor模板引擎 @RenderBody.@RenderPa ...

  10. JS基础_this

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...