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

Php 上传前检查文件是否为zip类型,php,Php,我希望人们能够上传zip文件到我的服务器。我有一个表单供他们上传,它会重定向到一个上传页面。我可以成功上传图片(png和jpg),但每当我尝试zip时我都无法上传,这不会显示任何错误,有没有办法接受zip文件 <?php function uploadfile() { $allowedExts = array("zip", "rar"); $split = explode(".",$_FILES["filework"]["name"]); $type = s

我希望人们能够上传zip文件到我的服务器。我有一个表单供他们上传,它会重定向到一个上传页面。我可以成功上传图片(png和jpg),但每当我尝试zip时我都无法上传,这不会显示任何错误,有没有办法接受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"];}
    }
}
?>

试试看

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

正如德国Danfrom所说,上传过程如下:

  • 用户发送带有所选文件的表单
  • 服务器将文件加载到临时文件夹(这就是为什么需要
    $temp\u file=$\u FILES['filework']['tmp\u name'];
  • 服务器执行php脚本来呈现表单的
    操作
    页面

  • 因为您的php是最后执行的,所以在上载之前它无法检查文件扩展名,但是如果临时文件不符合条件,您可以忽略它。

    在上载之前您不能检查服务器端的内容。@DanFromGermany不,我需要在上载之前检查它,它与我一起处理文档、文档、jpg、png。。。。否则压缩文件为什么!!!某些托管服务不允许上载(或重命名)zip文件。尤其是“免费”的。这实际上是有道理的,因为它可能导致“滥用”服务。您可能需要查看“服务条款”,其中将说明他们将存储哪些文件类型以及在什么条件下。请参阅我不久前测试过的此问答。如果这不起作用,那么正如Ryan的评论所说;这可能是主机服务设置的限制。
    in_array($type, $allowedExts)