File
» Kohana_File

File helper class.

package
Kohana
author
Kohana Team
copyright
© 2007-2009 Kohana Team
license
http://kohanaphp.com/license.html

Methods

public static mime ( string $filename )

Attempt to get the mime type from a file. This method is horribly unreliable, due to PHP being horribly unreliable when it comes to determining the mime type of a file.

Returns:
  • string mime type on success
  • FALSE on failure
Source:
public static function mime($filename)
{
	// Get the complete path to the file
	$filename = realpath($filename);

	// Get the extension from the filename
	$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));

	if (preg_match('/^(?:jpe?g|png|[gt]if|bmp|swf)$/', $extension))
	{
		// Use getimagesize() to find the mime type on images
		$file = getimagesize($filename);

		if (isset($image['mime']))
			return $file['mime'];
	}

	if (function_exists('finfo_open'))
	{
		if ($file = finfo_open(FILEINFO_MIME))
		{
			// Get the mime type
			$mime = finfo_file($file, $filename);

			// Close the finfo
			finfo_close($file);
		}

		return $mime;
	}

	if (ini_get('mime_magic.magicfile') AND function_exists('mime_content_type'))
	{
		// The mime_content_type function is only useful with a magic file
		return mime_content_type($filename);
	}

	if ( ! empty($extension))
	{
		return File::mime_by_ext($extension);
	}

	// Unable to find the mime-type
	return FALSE;
}

public static mime_by_ext ( string $extension )

Return the mime type of an extension.

Returns:
  • string mime type on success
  • FALSE on failure
Source:
public static function mime_by_ext($extension)
{
	// Load all of the mime types
	$mimes = Kohana::config('mimes');

	return isset($mimes[$extension]) ? $mimes[$extension][0] : FALSE;
}

public static split ( string $filename, string $piece_size = 10 )

Split a file into pieces matching a specific size.

Returns:
  • integer The number of pieces that were created.
Source:
public static function split($filename, $piece_size = 10)
{
	// Open the input file
	$file = fopen($filename, 'rb');

	// Change the piece size to bytes
	$piece_size = floor($piece_size * 1024 * 1024);

	// Write files in 8k blocks
	$block_size = 1024 * 8;

	// Total number of peices
	$peices = 0;

	while ( ! feof($file))
	{
		// Create another piece
		$peices += 1;

		// Create a new file piece
		$piece = str_pad($peices, 3, '0', STR_PAD_LEFT);
		$piece = fopen($filename.'.'.$piece, 'wb+');

		// Number of bytes read
		$read = 0;

		do
		{
			// Transfer the data in blocks
			fwrite($piece, fread($file, $block_size));

			// Another block has been read
			$read += $block_size;
		}
		while ($read < $piece_size);

		// Close the piece
		fclose($piece);
	}

	// Close the file
	fclose($file);

	return $peices;
}

public static join ( string $filename )

Join a split file into a whole file.

Returns:
  • integer The number of pieces that were joined.
Source:
public static function join($filename)
{
	// Open the file
	$file = fopen($filename, 'wb+');

	// Read files in 8k blocks
	$block_size = 1024 * 8;

	// Total number of peices
	$pieces = 0;

	while (is_file($piece = $filename.'.'.str_pad($pieces + 1, 3, '0', STR_PAD_LEFT)))
	{
		// Read another piece
		$pieces += 1;

		// Open the piece for reading
		$piece = fopen($piece, 'rb');

		while ( ! feof($piece))
		{
			// Transfer the data in blocks
			fwrite($file, fread($piece, $block_size));
		}

		// Close the peice
		fclose($piece);
	}

	return $pieces;
}

final private __construct ( )

Source:
final private function __construct()
{
	// This is a static class
}