/** * Processes server and $_FILE info relating to uploads to produce usable info. Assigns all gathered data to class variables which are accessible via public methods. * * @return void * @throws UploadHandlerProcessPostSizeException If the posted data size exceeds the maximum post size defined by php configuration * @throws UploadHandlerProcessNoInputException If no files were uploaded */ public static function processUploads() { if (self::$_processed) { return; } self::$_processed = true; self::$files = array(); if (self::$contentLength >= self::$maxPostSize) { // post length exceeds maximum post length ini directive - impossible for php to parse uploaded files because $_FILES is empty throw new UploadHandlerProcessPostSizeException(sprintf(self::$i18n['UPLOADHANDLER_ERR_PROCESS_POST_SIZE'], self::$contentLength, self::$maxPostSize)); } if (empty($_FILES)) { // no files uploaded throw new UploadHandlerProcessNoInputException(self::$i18n['UPLOADHANDLER_ERR_PROCESS_NO_INPUT']); } foreach ($_FILES as $fieldName => $field) { if (is_array($field['name'])) { // input field that uses [] in it's name self::$files[$fieldName] = array(); foreach ($field['name'] as $index => $ignoreThisValue) { $name = $field['name'][$index]; $type = $field['type'][$index]; $tmp_name = $field['tmp_name'][$index]; $error = intval($field['error'][$index]); $size = intval($field['size'][$index]); $file = new UploadHandlerFile($fieldName, $name, $type, $tmp_name, $error, $size); self::$files[$fieldName][] = $file; } } else { // single input field $name = $field['name']; $type = $field['type']; $tmp_name = $field['tmp_name']; $error = intval($field['error']); $size = intval($field['size']); $file = new UploadHandlerFile($fieldName, $name, $type, $tmp_name, $error, $size); self::$files[$fieldName] = array($file); } } }