Отображаем ошибку, если файл превышает допустимый размер при загрузке на WordPress

Работая на WordPress над любым проектом, в котором можно без труда загружать разные файлы, будь то видео, CSV-файлы, картинки или другой тип данных, вы рано или поздно столкнетесь с ситуацией, где вам необходимо будет определить, не будет ли размер файла слишком большим для загрузки на ресурс.

Отображаем ошибку, если файл превышает допустимый размер при загрузке на WordPress

То, что считается « слишком большим » может означать следующее:

  • Размер файла превышает допустимый(больше, чем может принять сама система веб-сайта)
  • Время ожидания истекает при длительной загрузке файла из-за его размера
  • Файловая система не имеет в себя достаточно места
  • Прочее

В любом из данных случаев, есть две вещи, которые вам необходимо будет сделать:

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

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

Размер файла превышает допустимый на WordPress

Как упоминалось, причина, по которой файл может быть «слишком большим» зависит от многих переменных.

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

1. Подготавливаем отображение уведомления

Примерно так будет выглядеть наш программный код уведомления на WordPress:

<?phpclass Acme_File_Importer {public function __construct() {add_action( 'admin_notices', array( $this, 'display_admin_notice'));}public function display_admin_notice() { // TODO}}

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

2. Проверка размера файла при загрузке

Учтите, данная функцию предполагает, что у вас есть соответствующая программа для определения наличия файла в строке загрузки $_FILES.

В этом случае посетитель предоставил файл для загрузки, и мы сделаем следующее:

<?php/** * Determines if the given file is too large for the current environment. * * @return bool True if the file is too large; otherwise, false. * @access private */private function file_is_too_large() { // Read the contents of the file $file_contents = file_get_contents( $_FILES['acme_uploaded_file']['tmp_name']); $is_too_large = false; /* Use your own metric for determining if the file is too large or not * and then set a boolean value depending on that result. */ return $is_too_large;}

Наличие возможности private для определения размера файла способствует лучшей читабельности кода.

Имеется ввиду, что использование вышеуказанного кода поможет нам создать программный код, информация в котором будет звучать так: «Если размеры файлов слишком большие, тогда покажите уведомление об ошибке», что мы рассмотрим в следующем шаге.

3. Вывод ошибки(или загрузка файла)

Наконец-то, мы обновляем возможность хука, которую мы определили для использования возможности private, отображаем ошибку, либо продолжаем загрузку файла:

<?php/** * Renders the appropriate message box based on how the import performs. */public function display_admin_notice() { if( $this->file_is_too_large()) { /* This would be cleaner if it were an external file that was * brought in via an include_once call, but this is just for    * example:).     */    $html = '<div class="error">';      $html.= '<p>You are attempting to upload a file that is too large.</p>';    $html.= '</div>';    echo $html;  }}

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

Это один из методов узнать, подходит ли тот или иной файл для загрузки на WordPress. Используйте этот способ в таком виде, как описано выше, либо создавайте ваши методы на его основе.

Источник: tommcfarlin.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *