【发布时间】:2010-12-16 22:00:37
【问题描述】:
简单的问题。有没有办法在上传时只允许txt文件?我环顾四周,发现只有text/php,它允许使用PHP。
$uploaded_type=="text/php
【问题讨论】:
标签: php text upload application-types
简单的问题。有没有办法在上传时只允许txt文件?我环顾四周,发现只有text/php,它允许使用PHP。
$uploaded_type=="text/php
【问题讨论】:
标签: php text upload application-types
当您使用 PHP 上传文件时,它存储在 $_FILES 数组中。其中有一个名为“type”的键,它具有文件 EG $_FILES['file']['type'] 的 mime 类型。
所以要检查它是否是一个 txt 文件
if($_FILES['file']['type'] == 'text/plain'){
//Do stuff with it.
}
解释得很好here。另外,不要依赖文件扩展名,这是非常不可靠的。
【讨论】:
简单地说:没有办法。浏览器并不始终支持文件上传字段的类型限制器(计划甚至集成到 HTML 标准中的 AFAIK,但充其量几乎没有实现)。文件扩展名和 mime 类型信息都是用户提供的,因此不可信。
您实际上只能尝试解析文件并查看它是否验证为您期望的任何格式,这是唯一可靠的方法。您需要小心的是由恶意格式错误的文件引起的缓冲区溢出等。如果你想要的只是文本文件,那可能没什么大不了的。
【讨论】:
您可以检查上传文件的 MIME 类型。在codeIgniter中,上传库中使用了这段代码:
$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);
然后变量$this->file_type用来检查上传配置,看上传的文件是否是允许的类型。您可以在 CodeIgniter 上传库文件中看到完整的代码。
【讨论】:
您需要检查上传文件的文件扩展名。
有Pear HttpUpload,它支持这个。
【讨论】: