简单的问题。有没有办法在上传时只允许txt文件?我环顾四周,找到的只是text/php
,它允许使用PHP。
$uploaded_type=="text/php
答案 0 :(得分:4)
当您使用PHP上传文件时,它存储在$ _FILES数组中。其中有一个名为“type”的密钥,它具有文件EG $_FILES['file']['type']
所以检查它是你做的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,它支持这个。