上传前检查文件是否为zip类型

时间:2014-08-06 16:48:11

标签: php

我希望人们能够将zip文件上传到我的服务器。我有一个表单供他们上传,然后重定向到上传页面。我可以成功上传图片(png和jpg),但每当我尝试拉链时,我都会上传它,它没有显示任何错误,有没有办法接受zip文件?

<?php
function uploadfile()
{
    $allowedExts = array("zip", "rar");
    $split = explode(".",$_FILES["filework"]["name"]);    
    $type = strtolower($split[sizeof($split)-1]); 
    $rname = time().".".$type;

    if (($_FILES["filework"]["type"] == "application/zip") || ($_FILES["filework"]["type"] == "application/x-zip") || ($_FILES["filework"]["type"] == "application/x-zip-compressed") && ($_FILES["filework"]["size"] < 20000000) && in_array($split, $allowedExts)) {
        $destination = "uploads/".$rname;
        $temp_file = $_FILES['filework']['tmp_name'];
        move_uploaded_file($temp_file,$destination);
        return $rname;
    } else {
        return $_FILES["filework"]["error"];}
    }
}
?>

1 个答案:

答案 0 :(得分:0)

in_array($type, $allowedExts)

此外,如果if失败并且未生成实际错误,则不会返回任何内容,请参阅php documentation

正如DanFromGermany所说,上传过程如下:

  1. 用户发送包含所选文件的表单
  2. 服务器将文件加载到临时文件夹(这就是您需要$temp_file = $_FILES['filework']['tmp_name'];的原因)
  3. 服务器执行php脚本以呈现表单的action页面
  4. 因为您的php最后执行,所以在上传之前无法检查文件扩展名,但是如果它不符合标准,您可以忽略它。