PHP: проверьте, является ли загружаемый файл действительным файлом PDF - PullRequest
0 голосов
/ 11 июня 2018

Я хочу проверить, является ли файл, отправленный пользователем, действительным файлом PDF с PHP. НО У меня есть следующие ограничения:

  1. PHP 5.0.4.
  2. Я не могу использовать mime_content_type и finfo_open
  3. У меня проблемы с shell_exec (команда file).Итак, опять же, я не могу его использовать.

Единственное, что мне нужно знать, это если файл на самом деле PDF.¿Какое решение более низкого уровня я могу использовать?Как читать первые x символов и искать% PDF или что-то в этом роде.

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 11 июня 2018

Попробуй: у меня это работает:

$file_type = $_FILES['filename']['type'];
if($file_type=='application/pdf'){
    // is pdf
}else{
   // not pdf
}
0 голосов
/ 11 июня 2018

Попробуйте использовать это

$allowed =  array('pdf');
$filename = $_FILES['document_file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
    echo 'Please, only upload PDF files';
}

То, что вы также можете сделать, это позволить PHP вызвать скрипт BASH для подтверждения того, что это ОС PDF, что я бы не советовал вам делать, но этонастолько низкий уровень, насколько это возможно.Вы также можете использовать регулярные выражения в bash или PHP для проверки заголовков файлов, если они совпадают с заголовками файлов PDF.

0 голосов
/ 11 июня 2018

Что-то вроде этого может быть ....

if(isset($_FILES['uploaded'])) {
    $temp = explode(".", $_FILES["uploaded"]["name"]);

    $allowedExts = array("pdf");


    if( in_array($allowedExts)) {
       //code....

    } else {
        echo "Error,not a PDF file";
    }
}

Очевидно, что вы также можете добавить дополнительные расширения для проверки, расширив массив

0 голосов
/ 11 июня 2018

Вы ограничены, но вы можете сделать что-то в бэкэнде после отправки формы, используя $_FILES, то есть из формы, отправленной с типом ввода = "file":

$_FILES['form_name_for_input_type_equals_file']['name'] ---> check if extension here is .pdf
$_FILES['form_name_for_input_type_equals_file']['type'] ---> check if mime type here is application/pdf

Для получения дополнительной информацииинформация о $_FILES нажмите здесь .

...