اشترك في مجموعة montadaphp.net حتى تصلك أخبار المنتدى  

بريدك الإلكتروني:

النتائج 1 إلى 3 من 3
  1. #1
    عضو جديد
    تاريخ التسجيل
    31-10-2010
    المشاركات
    1
    معدل تقييم المستوى
    0

    افتراضي التحكم في عملية التحميل بواسطة php - سؤال

    السلام عليكم

    بحثت عن دالة تدعم استكمال التحميل
    ولكن في كل مرة أجد أن الملفات المحمَّلة معطوبة وغير صالحة

    وهذه أحد الدوال

    كود PHP:
    function dl_file_resumable($file$is_resume=TRUE)
    {
        
    //First, see if the file exists
        
    if (!is_file($file))
        {
            die(
    "<b>404 File not found!</b>");
        }

        
    //Gather relevent info about file
        
    $size filesize($file);
        
    $fileinfo pathinfo($file);
        
        
    //workaround for IE filename bug with multiple periods / multiple dots in filename
        //that adds square brackets to filename - eg. setup.abc.exe becomes setup[1].abc.exe
        
    $filename = (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) ?
                      
    preg_replace('/\./''%2e'$fileinfo['basename'], substr_count($fileinfo['basename'], '.') - 1) :
                      
    $fileinfo['basename'];
        
        
    $file_extension strtolower($path_info['extension']);

        
    //This will set the Content-Type to the appropriate setting for the file
        
    switch($file_extension)
        {
            case 
    'exe'$ctype='application/octet-stream'; break;
            case 
    'zip'$ctype='application/zip'; break;
            case 
    'mp3'$ctype='audio/mpeg'; break;
            case 
    'mpg'$ctype='video/mpeg'; break;
            case 
    'avi'$ctype='video/x-msvideo'; break;
            default:    
    $ctype='application/force-download';
        }

        
    //check if http_range is sent by browser (or download manager)
        
    if($is_resume && isset($_SERVER['HTTP_RANGE']))
        {
            list(
    $size_unit$range_orig) = explode('='$_SERVER['HTTP_RANGE'], 2);

            if (
    $size_unit == 'bytes')
            {
                
    //multiple ranges could be specified at the same time, but for simplicity only serve the first range
                //http://tools.ietf.org/id/draft-ietf-http-range-retrieval-00.txt
                
    list($range$extra_ranges) = explode(','$range_orig2);
            }
            else
            {
                
    $range '';
            }
        }
        else
        {
            
    $range '';
        }

        
    //figure out download piece from range (if set)
        
    list($seek_start$seek_end) = explode('-'$range2);

        
    //set start and end based on range (if set), else set defaults
        //also check for invalid ranges.
        
    $seek_end = (empty($seek_end)) ? ($size 1) : min(abs(intval($seek_end)),($size 1));
        
    $seek_start = (empty($seek_start) || $seek_end abs(intval($seek_start))) ? max(abs(intval($seek_start)),0);

        
    //add headers if resumable
        
    if ($is_resume)
        {
            
    //Only send partial content header if downloading a piece of the file (IE workaround)
            
    if ($seek_start || $seek_end < ($size 1))
            {
                
    header('HTTP/1.1 206 Partial Content');
            }

            
    header('Accept-Ranges: bytes');
            
    header('Content-Range: bytes '.$seek_start.'-'.$seek_end.'/'.$size);
        }

        
    //headers for IE Bugs (is this necessary?)
        //header("Cache-Control: cache, must-revalidate");   
        //header("Pragma: public");

        
    header('(anti-spam-(anti-spam-(anti-spam-(anti-spam-content-type:)))) ' $ctype);
        
    header('Content-Disposition: attachment; filename="' $filename '"');
        
    header('Content-Length: '.($seek_end $seek_start 1));

        
    //open the file
        
    $fp fopen($file'rb');
        
    //seek to start of missing part
        
    fseek($fp$seek_start);

        
    //start buffered download
        
    while(!feof($fp))
        {
            
    //reset time limit for big files
            
    set_time_limit(0);
            print(
    fread($fp1024*8));
            
    flush();
            
    ob_flush();
        }

        
    fclose($fp);
        exit;

    مالحل ؟؟


  2. #2
    عضو شرف الصورة الرمزية MAJADO22
    تاريخ التسجيل
    13-04-2009
    المشاركات
    343
    معدل تقييم المستوى
    6

    افتراضي رد: التحكم في عملية التحميل بواسطة php - سؤال

    رائع .. فقط حسب علمي استكمال التحميل لا يحتاج الى اي دالة ...
    اذا كنت تريد من المستخدم .. ان لا يقوم باستكمال التحميل .. فقط قم بتعديل الإعدادات من السيرفر
    قم بتعديل إعدادات النوبدي < (المستخدمين اللذين لا يملكون اي صلاحيات على السيرفر ) وضعها بأنهم لا يملكون خاصية استكمال التحميل
    قم بتعديل إعدادات اليوزر < (المستخدمين الذي يملكون صلاحيات على السيرفر ) وأفتح لهم خاصية استكمال التحميل
    علماً ان العملية ليست بتلك السهولة ولا الصعوبة
    ولا حاجة لتقوم بإدخال لغة الـ php
    إلا في حالة أردت ان تقوم بالتعامل مع أوامر السيرفر بواسطة اللغة مباشره ويمكن ذالك بواسطة أوامر الشل وعليك فتح الشل في المساحة التي تقوم باستخدام برنامجك عليها <
    سبحان الله وبحمده
    سبحان الله العظيم

  3. #3
    مطور و مصمم ويب الصورة الرمزية محمد
    تاريخ التسجيل
    13-02-2010
    المشاركات
    738
    معدل تقييم المستوى
    5

    افتراضي رد: التحكم في عملية التحميل بواسطة php - سؤال

    السلام عليكم و رحمة الله تعالى و بركاته
    قرأت قبل مدة نفس السؤال في stackoverflow
    Resumable downloads when using PHP to send the file? - Stack Overflow
    Is there a good implementation of partial file downloading in PHP? - Stack Overflow

    و هذا كائن ممتاز استعمله حاليا
    HTTP Download - PHP Classes

    الله الموفق

    قطرة ماء ثثقب الحجر ليس بالقوة لكن بتكرار المحاولة!

معلومات الموضوع

الأعضاء الذين يشاهدون هذا الموضوع

الذين يشاهدون الموضوع الآن: 1 (0 من الأعضاء و 1 زائر)

المواضيع المتشابهه

  1. ارجوا الاجابة العاجلة من الاخوة الخبراء سوال بخصوص التحميل
    بواسطة saddam123 في المنتدى مشاكل وحلول PHP Errors & Troubleshooting
    مشاركات: 4
    آخر مشاركة: 19-11-2010, 06:27 PM
  2. سؤال في عملية الاضافة الضف والتعديل في قواعد البيانات؟
    بواسطة sherif_2307 في المنتدى مشاكل وحلول PHP Errors & Troubleshooting
    مشاركات: 1
    آخر مشاركة: 11-01-2009, 01:48 PM
  3. سؤال بسيط في عملية حسابية
    بواسطة smartx في المنتدى مشاكل وحلول PHP Errors & Troubleshooting
    مشاركات: 14
    آخر مشاركة: 11-05-2008, 12:22 PM
  4. سؤال عن تشفير البيانات بواسطة md5
    بواسطة enigma في المنتدى مشاكل وحلول PHP Errors & Troubleshooting
    مشاركات: 11
    آخر مشاركة: 30-04-2007, 12:01 PM

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •