说明:
我已经为用户提供了界面,他/她可以完美地上传pdf,doc,docx,img文件。 除了我对一小段代码感到困惑之外,所有事情都已完成。所以在知道为什么它完成之前我不能在我的php中写它。
首先上传任何文件时,我们会在采取任何进一步操作之前检查文件类型。 现在有两种方法可以检查一种是
$ext = end(explode(".",$_FILES['upload'][name]));
if(in_array($ext,$array_name_of_all_allowed_extensions))
OR
if($_FILES['upload']['type'] == "application/pdf")
{
//any action
}
但我看到上传文件的代码的每一个都是
$allowedExts = array("pdf", "doc", "docx");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "application/msword"))
&& ($_FILES["file"]["size"] < 20000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
每个人似乎都在使用这两个类型if
条件和in_array()
。
任何人都可以告诉我为什么会这样。我的意思是使用其中任何一个in_array()
首选应该做的工作
答案 0 :(得分:0)
这是可以理解的:
$ext = end(explode(".",$_FILES['upload'][name]));
if(in_array($ext,$array_name_of_all_allowed_extensions))
上面的代码我的同事程序员要检查用户上传的文件的扩展名,可以是你没有上传的web应用程序的任何奇怪的扩展名,所以你定义一个只有以“以”结尾的文件的数组.jpeg,.jpg,.pdf“等允许上传
if ((($_FILES["file"]["type"] == "application/pdf")
以上代码行检查上传文件的类型是否是您允许的类型
你可以在任何pdf文件的末尾写下.exe文件,它会将文件的名称更新为mypdf.exe,但文件的类型仍将保留为pdf文件,它将按照应有的规则打开。 ..因此,检查if
只是一项工作,上传的文件名称正确且未被篡改......
它完全是你的选择,否则如果你创建一个允许的文件类型的数组,然后使用足够的in_array()...希望有帮助:) ile是否