Невозможно загрузить файл pdf: Php - PullRequest
0 голосов
/ 09 июля 2020

Проблема, с которой я столкнулся, заключается в том, что я получаю следующую ошибку при попытке загрузить некоторые PDF-файлы your upload file is not PDF file. Однако эта ошибка появляется не для всех PDF-файлов, только для некоторых PDF-файлов я получаю эту ошибку.

<?php
$error = $_FILES['fileToUpload']['error'];
//get upload file type
$type = $_FILES['fileToUpload']['type'];
$action = "upload";
//get file name
$picname = $_FILES['fileToUpload']['name'];
$nameArray = explode(".", $picname);
if {
    //check files
    //filetoUpload code
}
?> 

Проблема в том, что в url: '../controller/uploadFile.php' , даже если файл PDF, $type = $_FILES['fileToUpload']['type']; вернет пустой, а затем go в условие else if($type !="application/pdf" ) и всплывет предупреждение your upload file is not PDF file.. Как я уже сказал, эта проблема связана с большей частью файла pdf. Тем не менее, некоторые файлы pdf загружаются без каких-либо проблем, и если файл pdf загружен, то $type будет application/pdf.

Ваш вклад будет очень оценен.

- - ОБНОВЛЕНИЕ --- Проблема связана с $_FILES, по какой-то причине он не получает сведения о файле pdf Проблема решена. Я проверил '$error= $_FILES['fileToUpload']['error'];, и значение возвращало 1

Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.```

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете лучше проверить расширение, это также предотвращает загрузку злоумышленниками файлов exe или zip, когда они предоставляют заголовок Content-Type: application/pdf. Также не во всех библиотеках браузеров / api указывается Content-Type.

Если ваше имя файла не содержит пути, проверьте его с помощью регулярного выражения, чтобы люди не могли загружать файлы в каталоги, которые им не следует (например, ../. ./cache/exe). используйте, например,

preg_match("/^[a-zA-Z0-9_+\\- ]+\\.pdf$/", $filename), чтобы проверить, является ли это pdf.

Никогда не делайте unlink('files/' . $filename);, если $ filename может быть чем угодно, отправленным пользователем. Удаление ../index.php может уничтожить ваш сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...