- drupal
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
| Name | Description |
|---|---|
| drupal_basename | Gets the filename from a given path. |
| drupal_chmod | Sets the permissions on a file or directory. |
| drupal_dirname | Gets the name of the directory from a given path. |
| drupal_mkdir | Creates a directory using Drupal's default mode. |
| drupal_move_uploaded_file | Moves an uploaded file to a new location. |
| drupal_realpath | Returns the absolute local filesystem path of a stream URI. |
| drupal_rmdir | Removes a directory. |
| drupal_tempnam | Creates a file with a unique filename in the specified directory. |
| drupal_unlink | Deletes a file. |
| file_build_uri | Constructs a URI to Drupal's default files location given a relative path. |
| file_copy | Copies a file to a new location and adds a file record to the database. |
| file_create_filename | Creates a full file path from a directory and filename. |
| file_create_htaccess | Creates a .htaccess file in the given directory. |
| file_create_url | Creates a web-accessible URL for a stream to an external or local file. |
| file_default_scheme | Gets the default file stream implementation. |
| file_delete | Deletes a file and its database record. |
| file_destination | Determines the destination path for a file. |
| file_directory_temp | Gets the path of system-appropriate temporary directory. |
| file_download | Menu handler for private file transfers. |
| file_ensure_htaccess | Creates a .htaccess file in each Drupal files directory if it is missing. |
| file_get_content_headers | Examines a file object and returns appropriate content headers for download. |
| file_get_mimetype | Determines an Internet Media Type or MIME type from a filename. |
| file_get_stream_wrappers | Provides Drupal stream wrapper registry. |
| file_load | Loads a single file object from the database. |
| file_load_multiple | Loads file objects from the database. |
| file_move | Moves a file to a new location and update the file's database entry. |
| file_munge_filename | Modifies a filename as needed for security purposes. |
| file_prepare_directory | Checks that the directory exists and is writable. |
| file_save | Saves a file object to the database. |
| file_save_data | Saves a file to the specified destination and creates a database entry. |
| file_save_upload | Saves a file upload to a new location. |
| file_scan_directory | Finds all files that match a given mask in a given directory. |
| file_space_used | Determines total disk space used by a single user or the whole filesystem. |
| file_stream_wrapper_get_class | Returns the stream wrapper class name for a given scheme. |
| file_stream_wrapper_get_instance_by_scheme | Returns a reference to the stream wrapper class responsible for a scheme. |
| file_stream_wrapper_get_instance_by_uri | Returns a reference to the stream wrapper class responsible for a given URI. |
| file_stream_wrapper_uri_normalize | Normalizes a URI by making it syntactically correct. |
| file_stream_wrapper_valid_scheme | Checks that the scheme of a stream URI is valid. |
| file_transfer | Transfers a file to the client using HTTP. |
| file_unmanaged_copy | Copies a file to a new location without invoking the file API. |
| file_unmanaged_delete | Deletes a file without database changes or hook invocations. |
| file_unmanaged_delete_recursive | Deletes all files and directories in the specified filepath recursively. |
| file_unmanaged_move | Moves a file to a new location without database changes or hook invocation. |
| file_unmanaged_save_data | Saves a string to the specified destination without invoking file API. |
| file_unmunge_filename | Undoes the effect of file_munge_filename(). |
| file_upload_max_size | Determines the maximum file upload size by querying the PHP settings. |
| file_uri_scheme | Returns the scheme of a URI (e.g. a stream). |
| file_uri_target | Returns the part of a URI after the schema. |
| file_usage_add | Records that a module is using a file. |
| file_usage_delete | Removes a record to indicate that a module is no longer using a file. |
| file_usage_list | Determines where a file is used. |
| file_validate | Checks that a file meets the criteria specified by the validators. |
| file_validate_extensions | Checks that the filename ends with an allowed extension. |
| file_validate_image_resolution | Verifies that image dimensions are within the specified maximum and minimum. |
| file_validate_is_image | Checks that the file is recognized by image_get_info() as an image. |
| file_validate_name_length | Checks for files with names longer than we can store in the database. |
| file_validate_size | Checks that the file's size is below certain limits. |
| file_valid_uri | Determines whether the URI has a valid scheme for file API operations. |
Constants
| Name | Description |
|---|---|
| FILE_CREATE_DIRECTORY | Flag used by file_prepare_directory() -- create directory if not present. |
| FILE_EXISTS_ERROR | Flag for dealing with existing files: Do nothing and return FALSE. |
| FILE_EXISTS_RENAME | Flag for dealing with existing files: Appends number until name is unique. |
| FILE_EXISTS_REPLACE | Flag for dealing with existing files: Replace the existing file. |
| FILE_MODIFY_PERMISSIONS | Flag used by file_prepare_directory() -- file permissions may be changed. |
| FILE_STATUS_PERMANENT | Indicates 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?