$ _ FILES [«файл»] [«размер»] возвращает 0?

Я пытаюсь загрузить что-то с помощью PHP и устанавливаю ограничение на общий размер, который я разрешаю для загрузки. Я хочу ограничить свои загрузки до 2 МБ, но по какой-то причине всякий раз, когда я пытаюсь проверить это с помощью оператора if, подобного этому:

if (($_FILES["file"]["size"] < 2097152))

Большой файл (например, файл 7 МБ) будет проходить через оператор if, потому что по какой-либо причине, если Я печатаю $ _FILES ["файл"] ["размер"], он вернет 0 вместо правильного количества байтов. Если я попытаюсь загрузить что-то меньшее, например 342kb, $ _FILES ["file"] ["size"] вернет правильный размер.

Есть ли способ получить $ _FILES ["файл"] ["размер"] для хранения правильного размера файла? В противном случае я не знаю, как исправить эту проблему.

18
задан user494216 31 October 2011 в 20:54
поделиться

1 ответ

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

 class UploadException extends Exception
{
public function __construct($code) {
    $message = $this->codeToMessage($code);
    parent::__construct($message, $code);
}

private function codeToMessage($code)
{
    switch ($code) {
        case UPLOAD_ERR_INI_SIZE:
            $message = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
            break;
        case UPLOAD_ERR_FORM_SIZE:
            $message = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form";
            break;
        case UPLOAD_ERR_PARTIAL:
            $message = "The uploaded file was only partially uploaded";
            break;
        case UPLOAD_ERR_NO_FILE:
            $message = "No file was uploaded";
            break;
        case UPLOAD_ERR_NO_TMP_DIR:
            $message = "Missing a temporary folder";
            break;
        case UPLOAD_ERR_CANT_WRITE:
            $message = "Failed to write file to disk";
            break;
        case UPLOAD_ERR_EXTENSION:
            $message = "File upload stopped by extension";
            break;

        default:
            $message = "Unknown upload error";
            break;
    }
    return $message;
  }
}

Теперь проверка, была ли загрузка успехом, прежде чем Вы сделаете что угодно с файлом. Если это НЕ будет загружено успешно, то это приведет к ошибке, которая скажет Вам что случилось.

Таким образом, вместо того, чтобы иметь необходимость потратить впустую Ваше время на предположение, что код ошибки мог означать или имеющий необходимость искать его все время, Ваше собственное составленное сообщение об ошибке возвратит сообщение, соответствующее с кодом ошибки.

   if (

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

[110]

Теперь проверка, была ли загрузка успехом, прежде чем Вы сделаете что угодно с файлом. Если это НЕ будет загружено успешно, то это приведет к ошибке, которая скажет Вам что случилось.

Таким образом, вместо того, чтобы иметь необходимость потратить впустую Ваше время на предположение, что код ошибки мог означать или имеющий необходимость искать его все время, Ваше собственное составленное сообщение об ошибке возвратит сообщение, соответствующее с кодом ошибки.

[111]FILES['realFile']['error'] === UPLOAD_ERR_OK) { echo 'no problems encountered. File was uploaded with success'; } else { throw new UploadException(

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

[110]

Теперь проверка, была ли загрузка успехом, прежде чем Вы сделаете что угодно с файлом. Если это НЕ будет загружено успешно, то это приведет к ошибке, которая скажет Вам что случилось.

Таким образом, вместо того, чтобы иметь необходимость потратить впустую Ваше время на предположение, что код ошибки мог означать или имеющий необходимость искать его все время, Ваше собственное составленное сообщение об ошибке возвратит сообщение, соответствующее с кодом ошибки.

[111]FILES['realFile']['error']); }
0
ответ дан 30 November 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: