Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Add File::mime()

Fixes #1051
  • Loading branch information...
commit f959fcefc453ea8d3cf004aefc12dee2e7b6cfb0 1 parent 28140f9
@markstory markstory authored
Showing with 41 additions and 2 deletions.
  1. +11 −0 lib/Cake/Test/Case/Utility/FileTest.php
  2. +30 −2 lib/Cake/Utility/File.php
View
11 lib/Cake/Test/Case/Utility/FileTest.php
@@ -464,6 +464,17 @@ public function testCopy() {
}
/**
+ * 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
*
* @param bool $paintSkip
View
32 lib/Cake/Utility/File.php
@@ -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() {
@@ -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;
}
@@ -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;
+ }
+
}
Please sign in to comment.
Something went wrong with that request. Please try again.