【问题标题】:Check file PDF or image before upload上传前检查文件 PDF 或图像
【发布时间】:2013-11-09 14:05:41
【问题描述】:

我正在学习 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>";       
        } 
    }

【问题讨论】:

  • 请同时使用上面的edit 按钮编辑问题,发布相应的 HTML 标记。
  • 哦,这是什么意思:“脚本无法继续”?
  • 不继续意味着如果我不选择 img 和 pdf 它没有加载到 mysql 但我只想检查文件是否为 jpg、pdf 等...如果用户不想上传 img 或 pdf 我希望脚本始终继续在 mysql 上加载表单的其他部分我没有发布因为问题仅在于此上传
  • 我重复我的问题,因为您没有真正回答:“不继续”是什么意思?你看,脚本不会简单地停止。如果他们这样做,总是有原因的。这个原因要么是它们被命令终止(这里不是这种情况),要么是崩溃了。在这种情况下,http 服务器错误日志中总是 有一些错误。这个条目是什么回答你的问题。因此,如果我问“这是什么意思”,那么我会问:“实际发生了什么?看看日志文件,看看发生了什么!”。 猜测是没有意义的!看看吧。

标签: php image file pdf upload


【解决方案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>";       
}

就是这样:)

【讨论】:

    【解决方案2】:

    为此你需要 javascript。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        你可以使用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
         }
        

        【讨论】:

        • thx phpinfo() 好多了!!但是我怎样才能让用户决定不卸载 img 或 pdf 呢?如果 php 检查扩展,则其他表单部分表单(名称、工作等)在 mysql 上的上传。
        猜你喜欢
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 2012-03-08
        • 1970-01-01
        • 2022-01-10
        • 2013-01-25
        • 1970-01-01
        • 2019-02-09
        相关资源
        最近更新 更多