ChandraPraksh Posted January 24, 2017 Share Posted January 24, 2017 I am using code for download a file in PHP. code works fine for all videos but when i try to download video larger than 1 GB it failed and show me network error. but if i use jdownloader it download the files. <?php set_time_limit(0); ini_set('memory_limit', '2G'); function getMimeType($fileName) { $c_type_default = "application/octet-stream"; $content_types = array( "exe" => "application/octet-stream", "zip" => "application/zip", "mp3" => "audio/mpeg", "mpg" => "video/mpeg", "avi" => "video/x-msvideo", "mp4" => "video/mp4", ); // echo isset($content_types[pathinfo($fileName, PATHINFO_EXTENSION)]) ? $content_types[pathinfo($fileName, PATHINFO_EXTENSION)] : $c_type_default; return isset($content_types[pathinfo($fileName, PATHINFO_EXTENSION)]) ? $content_types[pathinfo($fileName, PATHINFO_EXTENSION)] : $c_type_default; } function output_file($file, $name) { /* This function takes a path to a file to output ($file), the filename that the browser will see ($name) and the MIME type of the file ($mime_type, optional). */ //Check the file premission if(!is_readable($file)) die('File not found or inaccessible!'); $size = filesize($file); $name = rawurldecode($name); //turn off output buffering to decrease cpu usage @ob_end_clean(); include('../includes/configg.php'); // Start Code For Total Downloaded Data Size by The LoggedIn User $user="select * from $TBusers where id=".$_SESSION['log_id']; $result_user = mysqli_query($conn, $user) ; $row = mysqli_fetch_assoc($result_user); $lastsotrage = $row['down']; $curr_date= $row['curr_date']; $today_date= date('d-m-y'); $daily_downloaded_data= $row['daily_downloaded_data']; if($curr_date != $today_date) { $update_curr_date="update $TBusers set curr_date ='$today_date', daily_downloaded_data =0 where id=".$_SESSION['log_id']; // Set Curr_date by Today Date For check Daily Downloaded Data Limit mysqli_query($conn,$update_curr_date) ; $daily_downloaded_data=0; } /*else { if($daily_downloaded_data>=(20*1024*1024*1024)){ // Check Daily Download Data Limit 20GB Exceed or not header('Location: http://idownload.club/members/download.php'); exit;} }*/ // required for IE, otherwise Content-Disposition may be ignored if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); header('Content-Type: ' . getMimeType($name)); header('Content-Disposition: attachment; filename="'.$name.'"'); header("Content-Transfer-Encoding: binary"); header('Accept-Ranges: bytes'); /* The three lines below basically make the download non-cacheable */ header("Cache-control: private"); header('Pragma: private'); header("Expires: 0"); // multipart-download and download resuming support if(isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2); list($range) = explode(",",$range,2); list($range, $range_end) = explode("-", $range); $range=intval($range); if(!$range_end) { $range_end=$size-1; } else { $range_end=intval($range_end); } $new_length = $range_end-$range+1; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range-$range_end/$size"); } else { $new_length=$size; header("Content-Length: ".$size); } /* Will output the file itself */ $chunksize = 8*(1024*1024); //you may want to change this $bytes_send = 0; if ($file = fopen($file, 'r')) { if(isset($_SERVER['HTTP_RANGE'])) fseek($file, $range); while(!feof($file) && (!connection_aborted()) && ($bytes_send<$new_length) ) { $buffer = fread($file, $chunksize); print($buffer); //echo($buffer); // can also possible //flush(); $bytes_send += strlen($buffer); } fclose($file); $lastsotrage= $lastsotrage + $size; $daily_downloaded_data+=$size; $sql="update $TBusers set down =". $lastsotrage." where id=".$_SESSION['log_id']; $sql2="update $TBusers set daily_downloaded_data = $daily_downloaded_data where id=".$_SESSION['log_id']; $sql3= "update test set count=count+1 where id=1" ; mysqli_query($conn,$sql) ; mysqli_query($conn,$sql2) ;mysqli_query($conn,$sql3) ; file_put_contents('data.txt', print_r($_SERVER, true), FILE_APPEND); } else //If no permissiion die('Error - can not open file.'); //die die(); } //Set the time out set_time_limit(0); //path to the file $file_dir=$_GET['directory']; $file_name = str_replace("/", "", $_GET['file']); $file_name = str_replace("\\", "", $file_name); $file = $file_dir . "/".$file_name; //Call the download function with file path,file name and file type output_file($file, ''.$file_name.''); ?> Quote Link to comment Share on other sites More sharing options...
NotionCommotion Posted January 24, 2017 Share Posted January 24, 2017 Try adding the following: ini_set('post_max_size', '2G'); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.