# Working With Files ## Contents - [Reading Files](#get) - [Writing Files](#put) - [File Uploads](#upload) - [File Extensions](#ext) - [Checking File Types](#is) - [Getting MIME Types](#mime) - [Copying Directories](#cpdir) - [Removing Directories](#rmdir) ## Reading Files #### Getting the contents of a file: $contents = File::get('path/to/file'); ## Writing Files #### Writing to a file: File::put('path/to/file', 'file contents'); #### Appending to a file: File::append('path/to/file', 'appended file content'); ## File Uploads #### Moving a $_FILE to a permanent location: Input::upload('picture', 'path/to/pictures'); > **Note:** You can easily validate file uploads using the [Validator class](/docs/validation). ## File Extensions #### Getting the extension from a filename: File::extension('picture.png'); ## Checking File Types #### Determining if a file is given type: if (File::is('jpg', 'path/to/file.jpg')) { // } The **is** method does not simply check the file extension. The Fileinfo PHP extension will be used to read the content of the file and determine the actual MIME type. > **Note:** You may pass any of the extensions defined in the **application/config/mimes.php** file to the **is** method. > **Note:** The Fileinfo PHP extension is required for this functionality. More information can be found on the [PHP Fileinfo page](http://php.net/manual/en/book.fileinfo.php). ## Getting MIME Types #### Getting the MIME type associated with an extension: echo File::mime('gif'); > **Note:** This method simply returns the MIME type defined for the extension in the **application/config/mimes.php** file. ## Copying Directories #### Recursively copy a directory to a given location: File::cpdir($directory, $destination); ## Removing Directories #### Recursively delete a directory: File::rmdir($directory);