The file managed_file
field is used to upload files I am not sure if it can be used to delete a file from the server if that is what you are trying to do.
The process actually works as follows
When you click the upload button it uploads the file to the server and stored the fid to the field itself and this is the only value we need in the submit function to handle the file as we would using the file_load function to load the file and get the file object using the fid alone.
Now when the user clicks the remove button the field value is set to 0. But the actual file is not deleted from the server and the fid is still stored in the file table.
the '#default_value'
should be set to variable_get('image_example_image_fid', ''),
this would be used in our form submit function when the field is 0.
The documentation is talking about deleting the file from the temporary table and the server. You would need to remove it in your submit function.
Please check the example from the examples module
if ($form_state['values']['image_example_image_fid'] != 0) {
// The new file's status is set to 0 or temporary and in order to ensure
// that the file is not removed after 6 hours we need to change it's status
// to 1. Save the ID of the uploaded image for later use.
$file = file_load($form_state['values']['image_example_image_fid']);
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
// When a module is managing a file, it must manage the usage count.
// Here we increment the usage count with file_usage_add().
file_usage_add($file, 'image_example', 'sample_image', 1);
// Save the fid of the file so that the module can reference it later.
variable_set('image_example_image_fid', $file->fid);
drupal_set_message(t('The image @image_name was uploaded and saved with an ID of @fid and will be displayed using the style @style.', array('@image_name' => $file->filename, '@fid' => $file->fid, '@style' => $form_state['values']['image_example_style_name'])));
}
// If the file was removed we need to remove the module's reference to the
// removed file's fid, and remove the file.
elseif ($form_state['values']['image_example_image_fid'] == 0) {
// Retrieve the old file's id.
$fid = variable_get('image_example_image_fid', FALSE);
$file = $fid ? file_load($fid) : FALSE;
if ($file) {
// When a module is managing a file, it must manage the usage count.
// Here we decrement the usage count with file_usage_delete().
file_usage_delete($file, 'image_example', 'sample_image', 1);
// The file_delete() function takes a file object and checks to see if
// the file is being used by any other modules. If it is the delete
// operation is cancelled, otherwise the file is deleted.
file_delete($file);
}
// Either way the module needs to update it's reference since even if the
// file is in use by another module and not deleted we no longer want to
// use it.
variable_set('image_example_image_fid', FALSE);
drupal_set_message(t('The image @image_name was removed.', array('@image_name' => $file->filename)));
}