WP_REST_Attachments_Controller::upload_from_file()protectedWP 4.7.0

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

Метод класса: WP_REST_Attachments_Controller{}

Хуков нет.

Возвращает

Массив|WP_Error. Data from wp_handle_upload().

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->upload_from_file( $files, $headers );
$files(массив) (обязательный)
Data from the $_FILES superglobal.
$headers(массив) (обязательный)
HTTP headers from the request.

Список изменений

С версии 4.7.0 Введена.

Код WP_REST_Attachments_Controller::upload_from_file() WP 6.5.2

protected function upload_from_file( $files, $headers ) {
	if ( empty( $files ) ) {
		return new WP_Error(
			'rest_upload_no_data',
			__( 'No data supplied.' ),
			array( 'status' => 400 )
		);
	}

	// Verify hash, if given.
	if ( ! empty( $headers['content_md5'] ) ) {
		$content_md5 = array_shift( $headers['content_md5'] );
		$expected    = trim( $content_md5 );
		$actual      = md5_file( $files['file']['tmp_name'] );

		if ( $expected !== $actual ) {
			return new WP_Error(
				'rest_upload_hash_mismatch',
				__( 'Content hash did not match expected.' ),
				array( 'status' => 412 )
			);
		}
	}

	// Pass off to WP to handle the actual upload.
	$overrides = array(
		'test_form' => false,
	);

	// Bypasses is_uploaded_file() when running unit tests.
	if ( defined( 'DIR_TESTDATA' ) && DIR_TESTDATA ) {
		$overrides['action'] = 'wp_handle_mock_upload';
	}

	$size_check = self::check_upload_size( $files['file'] );
	if ( is_wp_error( $size_check ) ) {
		return $size_check;
	}

	// Include filesystem functions to get access to wp_handle_upload().
	require_once ABSPATH . 'wp-admin/includes/file.php';

	$file = wp_handle_upload( $files['file'], $overrides );

	if ( isset( $file['error'] ) ) {
		return new WP_Error(
			'rest_upload_unknown_error',
			$file['error'],
			array( 'status' => 500 )
		);
	}

	return $file;
}