File interface

  1. drupal
    1. 4.6 includes/file.inc
    2. 4.7 includes/file.inc
    3. 5 includes/file.inc
    4. 6 includes/file.inc
    5. 7 includes/file.inc
    6. 8 core/includes/file.inc

Common file handling functions.

Fields on the file object:

  • fid: File ID
  • uid: The {users}.uid of the user who is associated with the file.
  • filename: Name of the file with no path components. This may differ from the basename of the filepath if the file is renamed to avoid overwriting an existing file.
  • uri: URI of the file.
  • filemime: The file's MIME type.
  • filesize: The size of the file in bytes.
  • status: A bitmapped field indicating the status of the file. The first 8 bits are reserved for Drupal core. The least significant bit indicates temporary (0) or permanent (1). Temporary files older than DRUPAL_MAXIMUM_TEMP_FILE_AGE will be removed during cron runs.
  • timestamp: UNIX timestamp for the date the file was added to the database.

Functions & methods

NameDescription
drupal_basenameGets the filename from a given path.
drupal_chmodSets the permissions on a file or directory.
drupal_dirnameGets the name of the directory from a given path.
drupal_mkdirCreates a directory using Drupal's default mode.
drupal_move_uploaded_fileMoves an uploaded file to a new location.
drupal_realpathReturns the absolute local filesystem path of a stream URI.
drupal_rmdirRemoves a directory.
drupal_tempnamCreates a file with a unique filename in the specified directory.
drupal_unlinkDeletes a file.
file_build_uriConstructs a URI to Drupal's default files location given a relative path.
file_copyCopies a file to a new location and adds a file record to the database.
file_create_filenameCreates a full file path from a directory and filename.
file_create_htaccessCreates a .htaccess file in the given directory.
file_create_urlCreates a web-accessible URL for a stream to an external or local file.
file_default_schemeGets the default file stream implementation.
file_deleteDeletes a file and its database record.
file_destinationDetermines the destination path for a file.
file_directory_tempGets the path of system-appropriate temporary directory.
file_downloadMenu handler for private file transfers.
file_ensure_htaccessCreates a .htaccess file in each Drupal files directory if it is missing.
file_get_content_headersExamines a file object and returns appropriate content headers for download.
file_get_mimetypeDetermines an Internet Media Type or MIME type from a filename.
file_get_stream_wrappersProvides Drupal stream wrapper registry.
file_loadLoads a single file object from the database.
file_load_multipleLoads file objects from the database.
file_moveMoves a file to a new location and update the file's database entry.
file_munge_filenameModifies a filename as needed for security purposes.
file_prepare_directoryChecks that the directory exists and is writable.
file_saveSaves a file object to the database.
file_save_dataSaves a file to the specified destination and creates a database entry.
file_save_uploadSaves a file upload to a new location.
file_scan_directoryFinds all files that match a given mask in a given directory.
file_space_usedDetermines total disk space used by a single user or the whole filesystem.
file_stream_wrapper_get_classReturns the stream wrapper class name for a given scheme.
file_stream_wrapper_get_instance_by_schemeReturns a reference to the stream wrapper class responsible for a scheme.
file_stream_wrapper_get_instance_by_uriReturns a reference to the stream wrapper class responsible for a given URI.
file_stream_wrapper_uri_normalizeNormalizes a URI by making it syntactically correct.
file_stream_wrapper_valid_schemeChecks that the scheme of a stream URI is valid.
file_transferTransfers a file to the client using HTTP.
file_unmanaged_copyCopies a file to a new location without invoking the file API.
file_unmanaged_deleteDeletes a file without database changes or hook invocations.
file_unmanaged_delete_recursiveDeletes all files and directories in the specified filepath recursively.
file_unmanaged_moveMoves a file to a new location without database changes or hook invocation.
file_unmanaged_save_dataSaves a string to the specified destination without invoking file API.
file_unmunge_filenameUndoes the effect of file_munge_filename().
file_upload_max_sizeDetermines the maximum file upload size by querying the PHP settings.
file_uri_schemeReturns the scheme of a URI (e.g. a stream).
file_uri_targetReturns the part of a URI after the schema.
file_usage_addRecords that a module is using a file.
file_usage_deleteRemoves a record to indicate that a module is no longer using a file.
file_usage_listDetermines where a file is used.
file_validateChecks that a file meets the criteria specified by the validators.
file_validate_extensionsChecks that the filename ends with an allowed extension.
file_validate_image_resolutionVerifies that image dimensions are within the specified maximum and minimum.
file_validate_is_imageChecks that the file is recognized by image_get_info() as an image.
file_validate_name_lengthChecks for files with names longer than we can store in the database.
file_validate_sizeChecks that the file's size is below certain limits.
file_valid_uriDetermines whether the URI has a valid scheme for file API operations.

Constants

NameDescription
FILE_CREATE_DIRECTORYFlag used by file_prepare_directory() -- create directory if not present.
FILE_EXISTS_ERRORFlag for dealing with existing files: Do nothing and return FALSE.
FILE_EXISTS_RENAMEFlag for dealing with existing files: Appends number until name is unique.
FILE_EXISTS_REPLACEFlag for dealing with existing files: Replace the existing file.
FILE_MODIFY_PERMISSIONSFlag used by file_prepare_directory() -- file permissions may be changed.
FILE_STATUS_PERMANENTIndicates that the file is permanent and should not be deleted.

File

includes/file.inc, line 17
API for handling file uploads and server file management.

Comments

file_uri_to_object

Looking to go from a file uri to a file object without reading the files table yourself with SQL? Try file_uri_to_object from the media.module! Oh yes!

Doesn't exist in core

This function doesn't exist in drupal 7 core

file_uri_to_object

It's now located in the file_entity module.

Hooking into the file upload ajax process

I couldn't find any documentation about this anywhere so here's what I did:


<?php
/**
* Implementation of hook_form_FORM_ID_alter
**/
hook_form_FORM_ID_alter(&$form, &$form_state, $form_id){

$form['field_MY_FILE_FIELD_NAME']['und'][0]['#process'][] = 'my_processing_function';

}

/**
* My Ajax Upload File Processing Function
**/
function my_processing_function($element, &$form_state){

// check to see if it's submitted and if there's a file
if ($form_state['submitted'] && $element['#value']['fid']){

 
// Do stuff to the file here
 
$fid = $element['#value']['fid']
}

// make sure we return the element when we're done
return $element;
}
?>

How to Permanently Save File Upload of Type managed_file

Here is information on how to save a file that has been uploaded using a form and the type managed_file. The file is normally saved only temporarily and will be deleted automatically during CRON runs.

The form code looks something like this,

<?php
function MYMODULE_form ($form, &$form_state){
 
$form['MY_IMAGE_NAME'] = array(
   
'#title' => t('My Image'),
   
'#type' => 'managed_file',
   
'#description' => t('Please upload an image!'),
   
'#default_value' => variable_get('MY_IMAGE_NAME', ''),
   
'#progress_indicator' => 'bar',
   
'#upload_location' => 'public://',
  );
}

function
MYMODULE_form_submit ($form, &$form_state) {
 
/*Update the status to permanent*/
 
$form['MY_IMAGE_NAME']['#file']->status = FILE_STATUS_PERMANENT;
 
/*Save the updated file information to the database*/
 
file_save($form['MY_IMAGE_NAME']['#file']);
}
?>

You can check that the file is permanent by looking in the "file_managed" table in the "status" field. 0 means temporary, 1 means permanent.

I hope this helps someone. It was a little tricky for me to figure out.

I'm assuming that we're

I'm assuming that we're talking about D7 here..........

(If not, please disregard)

How are you getting the form_submit to trigger?

Since the file upload widget submits via ajax, I don't think it's getting called.

Amicrazy?

Login or register to post comments