限制文件上载类型

时间:2009-11-16 02:12:12

标签: php text upload application-types

简单的问题。有没有办法在上传时只允许txt文件?我环顾四周,找到的只是text/php,它允许使用PHP。

$uploaded_type=="text/php

4 个答案:

答案 0 :(得分:4)

当您使用PHP上传文件时,它存储在$ _FILES数组中。其中有一个名为“type”的密钥,它具有文件EG $_FILES['file']['type']

的mime类型

所以检查它是你做的txt文件

if($_FILES['file']['type'] == 'text/plain'){
    //Do stuff with it.
}

很好地解释了here。此外,不要依赖文件扩展,这是非常不可靠的。

答案 1 :(得分:3)

简单地说:没有办法。浏览器不一致支持文件上载字段中的类型限制器(已计划的AFAIK,甚至已集成到HTML标准中,但最好几乎没有实现)。文件扩展名和mime类型信息都是用户提供的,因此无法信任。

你真的只能尝试解析文件并查看它是否符合你期望的任何格式,这是唯一可靠的方法。您需要注意的是恶意格式错误的文件导致的缓冲区溢出等问题。如果你想要的只是文本文件,那可能不是什么大问题。

答案 2 :(得分:2)

您可以检查上传文件的mime类型。在codeIgniter中,此代码用于上载库:

$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);

变量$this->file_type然后用于检查上传配置,以查看上传的文件是否属于允许类型。您可以在CodeIgniter上载库文件中看到完整的代码。

答案 3 :(得分:1)

您需要检查上传文件的文件扩展名。

有Pear HttpUpload,它支持这个。