【问题标题】:Limiting file upload type限制文件上传类型
【发布时间】:2010-12-16 22:00:37
【问题描述】:

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

$uploaded_type=="text/php

【问题讨论】:

    标签: php text upload application-types


    【解决方案1】:

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

    所以要检查它是否是一个 txt 文件

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

    解释得很好here。另外,不要依赖文件扩展名,这是非常不可靠的。

    【讨论】:

      【解决方案2】:

      简单地说:没有办法。浏览器并不始终支持文件上传字段的类型限制器(计划甚至集成到 HTML 标准中的 AFAIK,但充其量几乎没有实现)。文件扩展名和 mime 类型信息都是用户提供的,因此不可信。

      您实际上只能尝试解析文件并查看它是否验证为您期望的任何格式,这是唯一可靠的方法。您需要小心的是由恶意格式错误的文件引起的缓冲区溢出等。如果你想要的只是文本文件,那可能没什么大不了的。

      【讨论】:

        【解决方案3】:

        您可以检查上传文件的 MIME 类型。在codeIgniter中,上传库中使用了这段代码:

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

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

        【讨论】:

          【解决方案4】:

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

          有Pear HttpUpload,它支持这个。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-03-21
            • 2011-11-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-12-21
            • 2016-11-10
            相关资源
            最近更新 更多