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