Split a file into pieces matching a specific size. Used when you need to split large files into smaller pieces for easy transmission.
$count = File::split($file);
integer Core_File::split( string $filename [, string $piece_size = integer 10 , integer $storage = string(7) "default" ] )
参数列表
参数 类型 描述 默认值 $filenamestringFile to be split $piece_sizestringDirectory to output to, defaults to the same directory as the file integer 10 $storageintegerSize, in MB, for each piece to be string(7) "default" 
integer The number of pieces that were createdpublic static function split($filename, $piece_size = 10 , $storage = 'default')
{
       $info = File::check_and_get_path($filename);
       if (File::can_do_run($storage))
       {
   		// 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;
       }
       else
       {
           return File::call_http_host($storage,'file/split',$info[0], $info[1], $piece_size);
       }
}