Title: WP_REST_Attachments_Controller::check_upload_size
Published: October 5, 2018
Last modified: February 24, 2026

---

# WP_REST_Attachments_Controller::check_upload_size( array $file ): true|󠀁[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)󠁿

## In this article

 * [Description](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#wp--skip-link--target)

Determine if uploaded file exceeds space quota on multisite.

## 󠀁[Description](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#description)󠁿

Replicates [check_upload_size()](https://developer.wordpress.org/reference/functions/check_upload_size/).

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#parameters)󠁿

 `$file`arrayrequired

$_FILES array for a given file.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#return)󠁿

 true|[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/) True
if can upload, error for errors.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#source)󠁿

    ```php
    protected function check_upload_size( $file ) {
    	if ( ! is_multisite() ) {
    		return true;
    	}

    	if ( get_site_option( 'upload_space_check_disabled' ) ) {
    		return true;
    	}

    	$space_left = get_upload_space_available();

    	$file_size = filesize( $file['tmp_name'] );

    	if ( $space_left < $file_size ) {
    		return new WP_Error(
    			'rest_upload_limited_space',
    			/* translators: %s: Required disk space in kilobytes. */
    			sprintf( __( 'Not enough space to upload. %s KB needed.' ), number_format( ( $file_size - $space_left ) / KB_IN_BYTES ) ),
    			array( 'status' => 400 )
    		);
    	}

    	if ( $file_size > ( KB_IN_BYTES * get_site_option( 'fileupload_maxk', 1500 ) ) ) {
    		return new WP_Error(
    			'rest_upload_file_too_big',
    			/* translators: %s: Maximum allowed file size in kilobytes. */
    			sprintf( __( 'This file is too big. Files must be less than %s KB in size.' ), get_site_option( 'fileupload_maxk', 1500 ) ),
    			array( 'status' => 400 )
    		);
    	}

    	// Include multisite admin functions to get access to upload_is_user_over_quota().
    	require_once ABSPATH . 'wp-admin/includes/ms.php';

    	if ( upload_is_user_over_quota( false ) ) {
    		return new WP_Error(
    			'rest_upload_user_quota_exceeded',
    			__( 'You have used your space quota. Please delete files before uploading.' ),
    			array( 'status' => 400 )
    		);
    	}

    	return true;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php#L1490)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php#L1490-L1533)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#related)󠁿

| Uses | Description | 
| [upload_is_user_over_quota()](https://developer.wordpress.org/reference/functions/upload_is_user_over_quota/)`wp-admin/includes/ms.php` |

Checks whether a site has used its allotted upload space.

  | 
| [get_upload_space_available()](https://developer.wordpress.org/reference/functions/get_upload_space_available/)`wp-includes/ms-functions.php` |

Determines if there is any upload space left in the current blog’s quota.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [is_multisite()](https://developer.wordpress.org/reference/functions/is_multisite/)`wp-includes/load.php` |

Determines whether Multisite is enabled.

  | 
| [get_site_option()](https://developer.wordpress.org/reference/functions/get_site_option/)`wp-includes/option.php` |

Retrieve an option value for the current network based on name of option.

  | 
| [WP_Error::__construct()](https://developer.wordpress.org/reference/classes/wp_error/__construct/)`wp-includes/class-wp-error.php` |

Initializes the error.

  |

[Show 4 more](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#)

| Used by | Description | 
| [WP_REST_Attachments_Controller::upload_from_file()](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/upload_from_file/)`wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php` |

Handles an upload via multipart/form-data ($_FILES).

  | 
| [WP_REST_Attachments_Controller::upload_from_data()](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/upload_from_data/)`wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php` |

Handles an upload via raw POST data.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/check_upload_size/?output_format=md#changelog)󠁿

| Version | Description | 
| [4.9.8](https://developer.wordpress.org/reference/since/4.9.8/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_rest_attachments_controller%2Fcheck_upload_size%2F)
before being able to contribute a note or feedback.