Отменить загрузку больших загрузок после чтения заголовков

Я хочу иметь HTTP POST для скрипта PHP, который включает в себя загрузку файла. PHP-скрипт должен отклонять любой файл, который не является правильным типом или иным образом искажен.

Это означает

  1. скрипт PHP начинает выполняться до завершения загрузки,
  2. он считывает первые X байтов файла и
  3. возможно, прекратите подключение до завершения загрузки.

Как я могу это сделать?

PHP не может прекратить загрузку. Но вы можете проверить $_FILES после того, как файл был полностью загружен.

Эта функция позволяет пользователям загружать как текстовые, так и двоичные файлы. С помощью функций проверки подлинности PHP и работы с файлами вы имеете полный контроль над тем, кому разрешено загружать и что делать с файлом после его загрузки .

Видеть:

http://php.net/manual/en/features.file-upload.post-method.php

Вы можете ограничить размер файла в php.ini

upload_max_filesize integer

Максимальный размер загруженного файла. Когда используется целое число, значение измеряется в байтах. Также могут использоваться сокращенные обозначения, как описано в этом FAQ.

http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize

Это максимум, который вы можете получить.

 <?php $allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = end(explode(".", $_FILES["file"]["name"])); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br />"; echo "Type: " . $_FILES["file"]["type"] . "<br />"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } } else { echo "Invalid file"; } ?>