function file_validate_size

Checks that the file's size is below certain limits.

Parameters

Drupal\file\File $file: A file entity.

$file_limit: An integer specifying the maximum file size in bytes. Zero indicates that no limit should be enforced.

$user_limit: An integer specifying the maximum number of bytes the user is allowed. Zero indicates that no limit should be enforced.

Return value

An array. If the file size exceeds limits, it will contain an error message.

See also

hook_file_validate()

1 call to file_validate_size()
ValidatorTest::testFileValidateSize in drupal/core/modules/file/lib/Drupal/file/Tests/ValidatorTest.php
Test file_validate_size().

File

drupal/core/modules/file/file.module, line 396
Defines a "managed_file" Form API field and a "file" field for Field module.

Code

function file_validate_size(File $file, $file_limit = 0, $user_limit = 0) {
  global $user;
  $errors = array();
  if ($file_limit && $file->filesize > $file_limit) {
    $errors[] = t('The file is %filesize exceeding the maximum file size of %maxsize.', array(
      '%filesize' => format_size($file->filesize),
      '%maxsize' => format_size($file_limit),
    ));
  }

  // Save a query by only calling spaceUsed() when a limit is provided.
  if ($user_limit && Drupal::entityManager()
    ->getStorageController('file')
    ->spaceUsed($user->uid) + $file->filesize > $user_limit) {
    $errors[] = t('The file is %filesize which would exceed your disk quota of %quota.', array(
      '%filesize' => format_size($file->filesize),
      '%quota' => format_size($user_limit),
    ));
  }
  return $errors;
}