function file_managed_file_save_upload in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/file/file.module \file_managed_file_save_upload()
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 An array of file entities for each file that was saved, keyed by its file ID, or FALSE if no files were saved.
1 call to file_managed_file_save_upload()
- ManagedFile::valueCallback in core/
modules/ file/ src/ Element/ ManagedFile.php - Determines how user input is mapped to an element's #value property.
File
- core/
modules/ file/ file.module, line 1158 - 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']);
$file_upload = \Drupal::request()->files
->get("files[{$upload_name}]", NULL, TRUE);
if (empty($file_upload)) {
return FALSE;
}
$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();
}