上传文件格式控制的困惑(application/octet-stream 限制不了BAT等格式上传)问题解决

允许上传类型部分代码
$uptypes=array(  //上传文件类型列表
‘image/gif‘, ‘image/jpg‘, ‘image/jpeg‘, ‘image/pjpeg‘, ‘image/png‘,‘application/msword‘,‘application/vnd.ms-excel‘,
‘image/bmp‘,‘text/plain‘,‘application/octet-stream‘,‘image/x-png‘,‘application/x-shockwave-flash‘,‘audio/mpeg‘,‘audio/x-ms-wma‘,
‘application/x-zip-compressed‘
);

判断文件类型部分
if(!in_array($_FILES["upfile"]["type"], $uptypes))
//检查文件类型
{
echo "<font color=‘red‘>不能上传此类型文件!</font>";
exit;
}

我的本意是想允许RAR这类文件上传,但做测试时,BAT,EXE等格式都可以上传,我测试了一下,这类文件的也是$_FILES["upfile"]["type"]是‘application/octet-stream‘,所以就能上传了。

目前我要想允许RAR上传,又能禁止BAT其它的格式文件上传怎么办?

解决的代码:
$uptypes=array(  //上传文件类型列表
‘gif‘, ‘jpg‘,‘jpeg‘,‘png‘,‘doc‘,‘xls‘,
‘bmp‘,‘txt‘,‘rar‘,‘swf‘,‘mp3‘,‘wma‘,
‘zip‘
);
$test=$_FILES["upfile"]["name"];
function getFileExt($file_name)
{
        while($dot = strpos($file_name, "."))
         {
                $file_name = substr($file_name, $dot+1);
         }
        return $file_name;
}
$test1= strtolower(getFileExt($test));
if(!in_array($test1, $uptypes))
//检查文件类型
{
echo "<font color=‘red‘>不能上传此类型文件!</font>";
exit();
}
小结:直接检查文件的扩展名用$_FILES["upfile"]["name"];,而不是用这个$_FILES["upfile"]["type"];文件的类型来限制。

时间: 2024-10-24 03:01:47

上传文件格式控制的困惑(application/octet-stream 限制不了BAT等格式上传)问题解决的相关文章

php 上传文件大小控制配置文件中设置的

Windows 环境下的修改方法 ================================================================第一步:修改在php5下POST文件大小的限制 1.编修php.ini 找到:max_execution_time = 30 ,这个是每个脚本运行的最长时间,单位秒,修改为:max_execution_time = 150 找到:max_input_time = 60,这是每个脚本可以消耗的时间,单位也是秒,修改为:max_input_

【转】HTML5的 input:file上传类型控制

一.input:file属性 属性值有以下几个比较常用: accept:表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用的MIME类型见下表. multiple:是否可以选择多个文件,多个文件时其value值为第一个文件的虚拟路径. 1.accept 只能选择png和gif图片 <input id="fileId1" type="file" accept="image/png,image/gif" name="

asp.net如何正确判断上传文件格式

ASP.NET中在判断文件格式时,如果通过截取扩展名来做判断.通过ContentType (MIME) 判断都不太安全,因为这两种方式用户都可以伪造. 下面介绍通过byte获取文件类型,来做判断的方式 if (Request.Files.Count > 0) { //这里只测试上传第一张图片file[0]     HttpPostedFile file0 = Request.Files[0];            //转换成byte,读取图片MIME类型     Stream stream;

DHCP和TFTP配置以及CentOS 7上的服务控制

一.DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用来给局域网的主机动态配置网络参数(IP地址.子网掩码.网关等),采用client/server架构 1.工作原理 ①DHCP Client以广播的方式发出DHCP Discover报文. ②广播域内所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文并且都会向其响应一个DHCP Offer报文. DHCP Offer报文中除了提供给DH

[转]如何使用multipart/form-data格式上传文件

form表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是"application/x-www-form-urlencoded",不能用于文件上传:只有使用了multipart/form-data,才能完整的传递文件数据. 有时,在网络编程过程中需要向服务器上传文件.Multipart/form-data是上传文件的一种方式. Multipart/form-data其实就是浏览器用表单上传文件的

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

php图片处理之图片转为base64格式上传

我们在开发系统时,处理图片上传是不可避免的,使用thinkphp的肯定很熟悉 import("@.ORG.UploadFile"); 的上传方式. 今天我们来讲一个使用html5 base64上传图片的方法. 其实就是用到html5 FileReader的接口,既然是html5的,所支持的浏览器我就不多说啦,老生常谈的问题了,远离IE,珍惜生命. 先扔个demo出来给大伙体验体验哈. http://t.lanchenglv.com/lan/index.php/Base64/images

如何使用multipart/form-data格式上传文件(POST请求时,数据是放在请求体内,而不是请求头内,在html协议中,用 “\r\n” 换行,而不是 “\n”)

在网络编程过程中需要向服务器上传文件.Multipart/form-data是上传文件的一种方式. Multipart/form-data其实就是浏览器用表单上传文件的方式.最常见的情境是:在写邮件时,向邮件后添加附件,附件通常使用表单添加,也就是用multipart/form-data格式上传到服务器. 表单形式上传附件 具体的步骤是怎样的呢? 首先,客户端和服务器建立连接(TCP协议). 第二,客户端可以向服务器端发送数据.因为上传文件实质上也是向服务器端发送请求. 第三,客户端按照符合“m

第八章 大网高级 &nbsp; 在asa上启用 NAT控制

 ASA上启用nat控制 实验要求: 1.配置各路由接口IP,asa接口 2.Asa上配置动态nat,实现R1能够telnet R4. 3.Asa 上配置动态PAT,实现R3能够telnet R4. 4.配置路由,实现 R2能够telnet R4 5.Asa 上配置启用nat控制,看R2是否能够访问R4? 6.让R4 实现telnet R1,需配置什么? 7.Show xlate detail  查看转换表. 一.配置接口 二.配置路由,实现内网互通. R1 R3 ASA 三.配置动态nat,R