Skip to content

Commit

Permalink
Add File::mime()
Browse files Browse the repository at this point in the history
Fixes #1051
  • Loading branch information
markstory committed Dec 19, 2011
1 parent 28140f9 commit f959fce
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
11 changes: 11 additions & 0 deletions lib/Cake/Test/Case/Utility/FileTest.php
Expand Up @@ -463,6 +463,17 @@ public function testCopy() {
$TmpFile->close();
}

/**
* Test mime()
*
* @return void
*/
public function testMime() {
$path = CAKE . 'Test' . DS . 'test_app' . DS . 'webroot' . DS . 'img' . DS . 'cake.power.gif';
$file = new File($path);
$this->assertEquals('image/gif', $file->mime());
}

/**
* getTmpFile method
*
Expand Down
32 changes: 30 additions & 2 deletions lib/Cake/Utility/File.php
Expand Up @@ -291,9 +291,16 @@ public function delete() {
}

/**
* Returns the File info.
* Returns the File info as an array with the following keys:
*
* @return string The File extension
* - dirname
* - basename
* - extension
* - filename
* - filesize
* - mime
*
* @return array File information.
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html#File::info
*/
public function info() {
Expand All @@ -306,6 +313,9 @@ public function info() {
if (!isset($this->info['filesize'])) {
$this->info['filesize'] = $this->size();
}
if (!isset($this->info['mime'])) {
$this->info['mime'] = $this->mime();
}
return $this->info;
}

Expand Down Expand Up @@ -536,4 +546,22 @@ public function copy($dest, $overwrite = true) {
}
return copy($this->path, $dest);
}

/**
* Get the mime type of the file. Uses the finfo extension if
* its available, otherwise falls back to mime_content_type
*
* @return false|string The mimetype of the file, or false if reading fails.
*/
public function mime() {
if (function_exists('finfo_open')) {
$finfo = finfo_open(FILEINFO_MIME);
list($type, $charset) = explode(';', finfo_file($finfo, $this->pwd()));
return $type;
} else if (function_exists('mime_content_type')) {
return mime_content_type($this->pwd());
}
return false;
}

}

0 comments on commit f959fce

Please sign in to comment.