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 ...
随机推荐
- easyui中 datagrid与pagination结合使用【记录】
/** * Js名称:客源基本管理 * */ var setPageNumber = 1; var setPageSize = 10; var guestManageListData = {}; // ...
- HTTP网页请求状态码
我们平时在打开一些网页的时候,会遇到打不开的情况,页面提示404错误,这个404就是http状态码.如果我们可以正常打开网页,这时也会有http状态码的,这个状态码就是200,只不过这时我们是无法通过 ...
- char. 类型篇
对于强类型的c语言,类型贯穿着整个语言体系,掌握好类型,学c语言就相当上手 .. 计算机的内存被分成一个个的储存单元. 一个储存单元=1 byte=8 bit 对于基本整型类型.char = ...
- SAS学习笔记35 options语句
- c# asp.net 实现分页(pager)功能
分页PagerHelper辅助类 using System;using System.Web; public class PagerHelper { #region 获取分页的Html代码 /// & ...
- Asp.net core 学习笔记 ( ef core transaction scope & change level )
ef core 有 unit of work 的概念,当我们 save change 时会自动使用 transaction 确保更新的一致性. 隔离级别是默认的 read committed 不允许脏 ...
- Spring邮件服务:Maven + Spring SMTP Mail (可发送附件)
1 spring-smtp-mail.xml <?xml version="1.0" encoding="UTF-8"?> <beans x ...
- linux重启php服务
- 记录我第一篇用Markdown写的Blog
Markdown的介绍 喝水不忘挖井人-Markdown的创造者 Markdown 最初是由 John Gruber 和 Aaron Swartz 于 2004 年共同设计的(在这里插一句,Aaron ...
- MVC5项目转.Net Core 2.2学习与填坑记录(1)
流程都是自己摸索,错误地方随便指正... 老项目过于臃肿,并且所有请求都是提交到一个api中,这样当api挂掉的时候,基本所有的项目都瘫痪掉了. 在4月底的时候,下决心将项目用微服务进行重写,刚开始的 ...