• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
نحوه اضافه کردن قابلیت resume به دانلود
#1
دوستان من یه پروژه ای دارم که کاربر ثبت نام میکنه اکانت مدت دار میخره و بعد میتونه موزیک دانلود کنه .
موزیک ها هم در سرور دیگه ایه و فقط لینکش اینور تو نرم فازر ثبت میشه .
از اونجایی که موزیک ها پولی هستن کاربر نباید ادرس فایلها رو ببینه برای همین تا اینجا مشکلی نیست
لینک سازی میشه با تابع freed فایل خونده میشه هدر هارو تغییر میدم و میفرستم که کاربر دانلود کنه
ولی دانلود کامل انجام نمیشه هر دفعه یه جا گیر میکنه
کد پی‌اچ‌پی:
$CI =& get_instance();
$CI->load->helper('func');
if(
$fileData !== false){
    
$timeexpire $fileData['time'];
    
$now time();
    
$file '';
    if(
$timeexpire $now){
        
redirect('download/time/2');
    }else{
        
$url              str_replace(" ","%20",$fileData['url']);
        
$fileinfo pathinfo($url);
        
$mimType= ($fileinfo['extension'] == 'mp3') ? 'audio/mpeg' 'txt';//set mime type to mp3
        
$fileSize curl_get_file_size($url);//get file size with curl
        
$size$fileSize;
        
//$fileSize= formatSizeUnits($fileSize);//convert byte to MB for file size
        
$foundCode existfile($url);//check exists file or not and return 400 or 200          
        
if($foundCode == 200){
           
$handel        = @fopen($url,'r');
        }else{
             
redirect(base_url().'track/faild'); 
        }                
        
$begin    1;
        
$end      $fileSize ;
        
$fileName basename($url);               
        if (isset(
$_SERVER['HTTP_RANGE'])){
            if (
preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i'$_SERVER['HTTP_RANGE'], $matches))
            {
                
$begin  intval($matches[1]);
                if (!empty(
$matches[2]))
                {
                  
$end  intval($matches[2]);
                }
            }
        }
        if (isset(
$_SERVER['HTTP_RANGE']))
        {
          
header('HTTP/1.1 206 Partial Content');
        }
        else
        {
          
header('HTTP/1.1 200 OK');
        }
         
        
header("Content-Type: application/force-download");
        
header('Cache-Control: public, must-revalidate, max-age=0');
        
header('Pragma: no-cache');  
        
header('Accept-Ranges: bytes');
        
header('Content-Length:' . (($end $begin) + 1));
        if (isset(
$_SERVER['HTTP_RANGE']))
        {
          
header("Content-Range: bytes $begin-$end/$size");
        }
        
header("Content-Disposition: attachment; filename=$fileName");
        
header("Content-Transfer-Encoding: binary");
        
$cur 1;
        if(
$handel != NULL){            
            
fseek($handel,2000,$cur);
            while(!
feof($handel) && $cur <= $end)
            {                             
                print 
fread($handel$cur);
                
$cur += 2000;
            }
        }else{
            
redirect(base_url()."track/faild");
        }
    }            


کل پروسه خوندن فایل و ارسال برای دانلود کد هاش رو قرار دادم کسی اگر تجربه کار این شکلی داره راهنمائی کنه ممنون میشم
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان