file_managed_file_save_upload($element, FormStateInterface $form_state)
Saves any files that have been uploaded into a managed_file element.
Parameters
array $element: The FAPI element whose values are being saved.
\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.
Return value
array|false An array of file entities for each file that was saved, keyed by its file ID. Each array element contains a file entity. Function returns FALSE if upload directory could not be created or no files were uploaded.
File
- core/modules/file/file.module, line 1176
- Defines a "managed_file" Form API field and a "file" field for Field module.
Code
function file_managed_file_save_upload($element, FormStateInterface $form_state) { $upload_name = implode('_', $element['#parents']); $all_files = \Drupal::request()->files->get('files', array()); if (empty($all_files[$upload_name])) { return FALSE; } $file_upload = $all_files[$upload_name]; $destination = isset($element['#upload_location']) ? $element['#upload_location'] : NULL; if (isset($destination) && !file_prepare_directory($destination, FILE_CREATE_DIRECTORY)) { \Drupal::logger('file')->notice('The upload directory %directory for the file field %name could not be created or is not accessible. A newly uploaded file could not be saved in this directory as a consequence, and the upload was canceled.', array('%directory' => $destination, '%name' => $element['#field_name'])); $form_state->setError($element, t('The file could not be uploaded.')); return FALSE; } // Save attached files to the database. $files_uploaded = $element['#multiple'] && count(array_filter($file_upload)) > 0; $files_uploaded |= !$element['#multiple'] && !empty($file_upload); if ($files_uploaded) { if (!$files = file_save_upload($upload_name, $element['#upload_validators'], $destination)) { \Drupal::logger('file')->notice('The file upload failed. %upload', array('%upload' => $upload_name)); $form_state->setError($element, t('Files in the @name field were unable to be uploaded.', array('@name' => $element['#title']))); return array(); } // Value callback expects FIDs to be keys. $files = array_filter($files); $fids = array_map(function($file) { return $file->id(); }, $files); return empty($files) ? array() : array_combine($fids, $files); } return array(); }
Please login to continue.