如何在上传器中允许其他文件类型

时间:2013-03-25 17:53:30

标签: php

这是我首先拥有的代码

$allowedExts = array("gif", "jpeg", "jpg", "PNG", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif") // .gif
|| ($_FILES["file"]["type"] == "image/jpeg") // .jpeg
|| ($_FILES["file"]["type"] == "image/jpg") // .jpg
|| ($_FILES["file"]["type"] == "image/jpg") // .jpg
|| ($_FILES["file"]["type"] == "image/PNG") // .PNG
|| ($_FILES["file"]["type"] == "image/png")) //.png
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts)

我想要的是所以我也可以上传.RAR / .ZIP文件。

3 个答案:

答案 0 :(得分:1)

你还没有给我们太多的帮助,但根据我们所掌握的信息,你会做点像......

$allowedExts = array("gif", "jpeg", "jpg", "PNG", "png","rar","zip");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif") // .gif
|| ($_FILES["file"]["type"] == "image/jpeg") // .jpeg
|| ($_FILES["file"]["type"] == "image/jpg") // .jpg
|| ($_FILES["file"]["type"] == "image/jpg") // .jpg
|| ($_FILES["file"]["type"] == "image/PNG") // .PNG
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "application/x-rar-compressed")
|| ($_FILES["file"]["type"] == "application/zip"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts)

答案 1 :(得分:1)

您只需要将扩展​​添加到$ allowedExts数组,另外在检查中添加文件类型的mime类型,如下所示:

$allowedExts = array("gif", "jpeg", "jpg", "PNG", "png", "zip", "rar");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif") // .gif
|| ($_FILES["file"]["type"] == "image/jpeg") // .jpeg
|| ($_FILES["file"]["type"] == "image/jpg") // .jpg
|| ($_FILES["file"]["type"] == "image/jpg") // .jpg
|| ($_FILES["file"]["type"] == "image/PNG") // .PNG
|| ($_FILES["file"]["type"] == "image/png")) //.png
|| ($_FILES["file"]["type"] == "application/x-rar-compressed")) //.rar (can also use application/octet-stream)
|| ($_FILES["file"]["type"] == "application/zip")) //.zip (can also use application/octet-stream)
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts)

答案 2 :(得分:1)

你不能相信$_FILES["file"]["type"]上的内容,因为它是由浏览器发送的,这很容易被欺骗。

我建议您使用fileInfo扩展名来启动,您可以在其中实际检查服务器端的mime类型。

然后使用while / black列表数组来允许/拒绝用户上传的扩展名类型