如果我的输入类型文件不为空,请检查它是否是.pdf文件

时间:2016-12-29 13:46:29

标签: php

我有问题。

我有一个表格可以上传pdf文件。此字段不是必需的,如果它是空的,我不想输出错误。但如果它不是空的我不想检查文件扩展名是.pdf。

我该怎么做?

我的PHP代码是:

$pdf_dir    = "pdf_datoteke/";
$pdf_file   = $pdf_dir . basename($_FILES['news_link']['name']);
$pdf_type   = pathinfo($pdf_file,PATHINFO_EXTENSION);
$pdf_allowed = array('pdf');

if (empty($_POST['news_link']) === false && in_array($pdf_type,  $pdf_allowed) === false) {
                $errors[] = '<h2">* To ni pdf datoteka!</h2><br>';  
            }

2 个答案:

答案 0 :(得分:0)

$filename = your_filename;
$arr = explode(".", $filename);
$parts = count($arr);
$is_pdf = ($arr[$parts-1]=="pdf") ? true : false;

如果$is_pdf为真,那么它是pdf,否则不是。

答案 1 :(得分:0)

如果enybody提出同样的问题我找到了解决方案。

我需要将此代码放入:

if (is_uploaded_file($_FILES['news_link']['tmp_name'])) {
            $name = $_FILES['news_link']['name'];
            $ext = end((explode('.', $name)));

            if ($ext != 'pdf'){
                $errors[] = '<h2>* This file format is not .pdf!</h2>';
            }
        }

对于图片,其中有一种格式出现了,我把这段代码:

if (is_uploaded_file($_FILES['news_picture']['tmp_name'])) {
            $image_name = $_FILES['news_picture']['name'];
            $image_size = $_FILES['news_picture']['size'];

            $allowed_ext    = array('jpg', 'jpeg', 'png', 'gif', 'mp4');
            $image_ext      = pathinfo($image_name, PATHINFO_EXTENSION);
            $image_ext      = strtolower($image_ext);

            if (in_array($image_ext, $allowed_ext) === false) {
                $errors[] = '<h2>* This image formati is not accepted</h2>';
            }
            if ($image_size > 33554432) {
                $errors[] = '<h2>* This image is to big!</h2>';
            }
        }

我希望这对某人有帮助。