با استفاده از کد زیر میتوانیم هر فایلی را تا تعداد999 تکه splitکنیم. در ضمن این کد قابلیت rejoinفایل های split شده را دارد.


کد PHP:

<pre class="brush: php;" style="direction:ltr;">$filename "http://www.iyinet.com/my-big-file.zip";
  
$targetfolder '/tmp';
  
$piecesize 10// splitted file size in MB
  
$buffer 1024;
$piece 1048576*$piecesize;
$current 0;
$splitnum 1;
  
if(!
file_exists($targetfolder)) {
    if(
mkdir($targetfolder)) {
        echo 
"Created target folder $targetfolder".br();
    }
}
  
if(!
$handle fopen($filename"rb")) {
    die(
"Unable to open $filename for read! Make sure you edited filesplit.php correctly!".br());
}
  
$base_filename basename($filename);
  
$piece_name $targetfolder.'/'.$base_filename.'.'.str_pad($splitnum3"0"STR_PAD_LEFT);
if(!
$fw fopen($piece_name,"w")) {
    die(
"Unable to open $piece_name for write. Make sure target folder is writeable.".br());
}
echo 
"Splitting $base_filename into $piecesize Mb files ".br()."(last piece may be smaller in size)".br();
echo 
"Writing $piece_name...".br();
while (!
feof($handle) and $splitnum 999) {
    if(
$current $piece) {
        if(
$content fread($handle$buffer)) {
            if(
fwrite($fw$content)) {
                
$current += $buffer;
            } else {
                die(
"filesplit.php is unable to write to target folder. Target folder may not have write permission! Try chmod +w target_folder".br());
            }
        }
    } else {
        
fclose($fw);
        
$current 0;
        
$splitnum++;
        
$piece_name $targetfolder.'/'.$base_filename.'.'.str_pad($splitnum3"0"STR_PAD_LEFT);
        echo 
"Writing $piece_name...".br();
        
$fw fopen($piece_name,"w");
    }
}
fclose($fw);
fclose($handle);
echo 
"Done! ".br();
exit;
  
function 
br(){
    return (!empty(
$_SERVER['SERVER_SOFTWARE']))?'':"\n";