file_save_upload
Definition
file_save_upload($source, $dest = 0, $replace = FILE_EXISTS_RENAME)
includes/file.inc, line 382
Description
Saves a file upload to a new location. The source file is validated as a proper upload and handled as such.
Parameters
$source A string specifying the name of the upload field to save. This parameter will contain the resulting destination filename in case of success.
$dest A string containing the directory $source should be copied to, will use the temporary directory in case no other value is set.
$replace A boolean, set to true if the destination should be replaced when in use, but when false append a _X to the filename.
Return value
An object containing file info or 0 in case of error.
Related topics
| Name | Description |
|---|---|
| File interface | Common file handling functions. |
Code
<?php
function file_save_upload($source, $dest = 0, $replace = FILE_EXISTS_RENAME) {
// Make sure $source exists in $_FILES.
if ($file = file_check_upload($source)) {
if (!$dest) {
$dest = variable_get('file_directory_temp', FILE_DIRECTORY_TEMP);
$temporary = 1;
if (is_file($file->filepath)) {
// If this file was uploaded by this user before replace the temporary copy.
$replace = 1;
}
}
// Check for file upload errors.
switch ($file->error) {
case 0: // UPLOAD_ERR_OK
break;
case 1: // UPLOAD_ERR_INI_SIZE
case 2: // UPLOAD_ERR_FORM_SIZE
drupal_set_message(t('File upload failed: file size too big.'), 'error');
return 0;
case 3: // UPLOAD_ERR_PARTIAL
case 4: // UPLOAD_ERR_NO_FILE
drupal_set_message(t('File upload failed: incomplete upload.'), 'error');
return 0;
default: // Unknown error
drupal_set_message(t('File upload failed: unknown error.'), 'error');
return 0;
}
unset($_SESSION['file_uploads'][is_object($source) ? $source->source : $source]);
if (file_move($file, $dest, $replace)) {
if ($temporary) {
$_SESSION['file_uploads'][is_object($source) ? $source->source : $source] = $file;
}
return $file;
}
return 0;
}
return 0;
}
?> 