如何设置只上传word文件的条件

时间:2013-12-21 12:06:36

标签: php file upload ms-word

if(isset($_POST["upload"]))
{
    if( ($_FILES['file']['name']!='') && ($_FILES['file']['type']=="   image/png") )
    {
        $filepath=rand(1111,9999).$_FILES['file']['name'];
        move_uploaded_file($_FILES['file']['tmp_name'],'quotations/'.$filepath);
    }
}

这是我上传PNG格式图片的代码。现在我不想使用PNG,而是希望它只上传Word文件。如何编写仅上载Word文件的条件?

3 个答案:

答案 0 :(得分:0)

您可以使用<input type="file" accept=".doc">

$filename = basename($_FILES['uploaded_file']['name']);
$ext = substr($filename, strrpos($filename, '.') + 1);
if ($ext == ".doc"){
   //Do your code for uploading here

}

答案 1 :(得分:0)

如果您构建一个允许的文件类型数组,如下所示:

$onlyAllow = array();
$onlyAllow[] = 'image/png';
$onlyAllow[] = 'application/msword'
$onlyAllow[] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';   //Word .docx

然后,您可以使用in_array

对该数组进行测试
if(isset($_POST["upload"])) {
    if( ($_FILES['file']['name']!='') && ($_FILES['file']['type']in_array($onlyAllow)) {
        $filepath=rand(1111,9999).$_FILES['file']['name'];
        move_uploaded_file($_FILES['file']['tmp_name'],'quotations/'.$filepath);
    }
}

当您需要添加新的允许文件时,只需将其添加到您的阵列即可。

答案 2 :(得分:0)

通过查看MIME类型,您可以获得更多限制,而不仅仅是查看扩展。 Stackoverflow上有很多关于这个问题的帖子。例如herehere

特别是最后一个提供了一些有关较新版本的Office的有用信息。在这里,文档实际上是压缩的zip文件,这意味着MIME类型被错误地标识为ZIP。