| 1 file.module | file_managed_file_save_upload($element) |
Saves any files that have been uploaded into a managed_file element.
Parameters
$element: The Form API element whose values are being saved.
Return value
File[]|File|false: A file object if a new file was uploaded, or an array of file objects if multiple files were uploaded. FALSE if no files were uploaded.
File
- core/
modules/ file/ file.module, line 1773 - Defines a "managed_file" Form API field and a "file" field for Field module.
Code
function file_managed_file_save_upload($element) {
$upload_name = implode('_', $element['#parents']);
if (empty($_FILES['files']['name'][$upload_name])) {
return FALSE;
}
$destination = isset($element['#upload_location']) ? $element['#upload_location'] : NULL;
if (isset($destination) && !file_prepare_directory($destination, FILE_CREATE_DIRECTORY)) {
watchdog('file', '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_set_error($upload_name, t('The file could not be uploaded.'));
return FALSE;
}
// Save attached files to the database.
$files_uploaded = $element['#multiple'] && count(array_filter($_FILES['files']['name'][$upload_name])) > 0;
$files_uploaded |= !$element['#multiple'] && !empty($_FILES['files']['name'][$upload_name]);
if ($files_uploaded) {
if (!$files = file_save_upload($upload_name, $element['#upload_validators'], $destination)) {
watchdog('file', 'The file upload failed. %upload', array('%upload' => $upload_name));
form_set_error($upload_name, t('Files in the !name field were unable to be uploaded.', array('!name' => $element['#title'])));
return array();
}
// If multiple files were saved, $files is an array that needs to be keyed
// by file ID.
if (is_array($files)) {
$files = array_filter($files);
$fids = array_map(function($file) {
return $file->fid;
}, $files);
$files = array_combine($fids, $files);
}
return $files;
}
return array();
}