0

我正在学习 PHP,但我自己没有找到正确的方法。我希望始终需要 Img(并且我在表单输入required属性中检查了这一点),但我可以决定是否上传 PDF。如果我不选择两者,脚本将不会继续。

我有这个:

    // image select from form
    $img = basename($_FILES['img']['name']);
    $allow_img = array('jpg', 'png', 'jpeg');
    $ext_img = explode('.', strtolower($_FILES['img']['name']));
    $type_img= end($ext_img);

    //pdf select from form
    $pdf = basename($_FILES['pdf']['name']);
    $allow_pdf = array('pdf');
    $ext_pdf = explode('.', strtolower($_FILES['pdf']['name']));
    $type_pdf= end($ext_pdf);

    if ($img || $pdf) {
        if(!in_array($type_img, $allow_img) || !in_array($type_pdf, $allow_pdf) ) {
         echo "<p><a href='../admin.php'><img style='border:none;' src='../../img/arrow-left.png' /></a>Only jpg, png, jpeg and PDF.</p>";       
        } 
    }
4

4 回答 4

1

在这里,您可以使用一种超快速的方法来完成此操作:

$filename = $_FILES['img']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);

// allowed extensions
$allowed = array('jpeg', 'png', 'jpeg', 'gif');

if (in_array($ext, $allowed)) {
    echo "<p><a href='../admin.php'><img style='border:none;' src='../../img/arrow-left.png' /></a>Only jpg, png, jpeg and PDF.</p>";       
}

而已 :)

于 2013-11-09T14:27:29.757 回答
0

您可以使用pathinfo()内置的 php 函数,

 $File = $_FILES['image']['name'];
 $Infos = pathinfo($File);
 echo $extension = $info[extension];

 echo "<pre>"; print_r($Infos); echo "</pre>";
 $extension = strtolower( $extension);
 if( $extension=='pdf'){
    // do your stuff
 }
于 2013-11-09T14:31:03.180 回答
0

为此,您需要 javascript。

在您发送退货之前,您需要检查文件类型。

于 2013-11-09T14:16:16.157 回答
0

很可能第二次basename()调用崩溃,因为没有$_FILES['pdf']上传 pdf 文件时不存在。但是您甚至没有在这里检查错误...查看http服务器错误日志文件,您很可能会在那里看到错误。

也就是说:如果发生意外情况,请始终查看日志文件。并始终在使用之前测试变量是否存在。并且在调用某些可能不会返回您期望的函数时始终进行错误检查。

于 2013-11-09T14:19:59.897 回答