description

دانلود غیر مستقیم در هاست ها دانلود

- 7 ماه پیش
توسط حسام موسوی آپدیت شد
همایون رضایی ( 157 تجربه )
7 ماه پیش

با سلام و عرض ادب و احترام خدمت تمام دوستان

بنده از هاست های دانلود استفاده نکرده ام اما برای یکی از پروژه هام نیاز هست که از این نوع هاست استفاده کنم.
من نیاز دارم که بتونم فایلی که در هاست دانلود قرار دادم رو به صورت غیرمستقیم دانلود کنم. یعنی کاربر نباید بتونه آدرس فایل رو در هاست دانلود متوجه بشه. به عنوان مثال در همین سایت راکت برای دانلود فایل های ویدئویی به صورت غیر مستقیم عمل میشه.
من روش دانلود غیر مستقیم در هاست های معمولی رو می دونم می خوام بدونم آیا از همین روش برای هاست دانلودی هم میشه استفاده کرد ؟
بنده کد زیر رو برای هاست های غیر دانلودی استفاده می کنم :

    public function fileDownload($file_path, $case = 'download', $speed = 1024){
        if(file_exists('.'.$file_path)){
            $path_parts = pathinfo($file_path);
            $file_name = $path_parts['basename'];
            $file_ext = $path_parts['extension'];
            $file_path = '.'.$file_path;
            $file_size = filesize($file_path);
            $file = @fopen($file_path, "rb");
            if($file){
                error_reporting(E_ALL & ~E_NOTICE);
                header("Pragma: public");
                header("Expires: -1");
                header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0");
                switch($case){
                    case 'download':
                        header("Content-Disposition: attachment; filename=\"$file_name\"");
                    break;
                    case 'online':
                        header("X-Sendfile: $file_path");
                    break;
                }
                $ctype_default = "application/octet-stream";
                $content_types = array(
                    "rar" => "application/rar",
                    "mp3" => "audio/mpeg",
                    "mp4" => "video/mp4"
                );
                $ctype = isset($content_types[$file_ext]) ? $content_types[$file_ext] : $ctype_default;
                header("Content-Type: " . $ctype);
                if(isset($_SERVER['HTTP_RANGE'])){
                    list($size_unit, $range_orig) = explode('=', $_SERVER['HTTP_RANGE'], 2);
                    if ($size_unit == 'bytes'){
                        list($range, $extra_ranges) = explode(',', $range_orig, 2);
                    }else{
                        $range = '';
                        header('HTTP/1.1 416 Requested Range Not Satisfiable');
                        exit;
                    }
                }else{
                    $range = '';
                }
                list($seek_start, $seek_end) = explode('-', $range, 2);
                $seek_end = (empty($seek_end)) ? ($file_size - 1) : min(abs(intval($seek_end)), ($file_size - 1));
                $seek_start = (empty($seek_start) || $seek_end < abs(intval($seek_start))) ? 0 : max(abs(intval($seek_start)), 0);
                if($seek_start > 0 || $seek_end < ($file_size - 1)){
                    header('HTTP/1.1 206 Partial Content');
                    header('Content-Range: bytes '.$seek_start.'-'.$seek_end.'/'.$file_size);
                    header('Content-Length: '.($seek_end - $seek_start + 1));
                }else{
                    header("Content-Length: $file_size");
                }
                header('Accept-Ranges: bytes');
                set_time_limit(0);
                fseek($file, $seek_start);
                ob_clean();
                while(!feof($file) && ( connection_status() == 0)){
                    print(@fread($file, 1024 * $speed));
                    flush();
                    ob_flush();
                }
                @fclose($file);
                exit;
            }
            else{
                header("HTTP/1.0 500 Internal Server Error");
                exit;
            }
        }else{
            header("HTTP/1.0 404 Not Found");
            exit;
        }
    }

اگر میشه از این کد استفاده کرد برای هاست دانلود من باید مقداری که در $file_path قرار می گیره رو به چه صورت بنویسم ؟
با تشکر ...

حسام موسوی ( 69306 تجربه )
7 ماه پیش

با سلام رو هاست دانلودتون هم باید قابلیت اجرای اسکریپت php رو داشته باشین .
filepath رو یک مقدار برای secret path داشته باشید و اون قسمت عمومی رو برای دانلود ارسال کنید در پرامتر درخواست دانلود

همایون رضایی ( 157 تجربه )
7 ماه پیش

سلام مجدد خدمت دوستان و جناب مهندس موسوی

جناب موسوی مشکل دقیقا همینه که هاست های دانلود تا اونجا که من اطلاع دارم و تحیق کردم قابلیت اجرای اسکریپت رو ندارن و صرفا محلی برای نگهداری فایل هستند.
ما صرفا یک ساب دامین داریم که هاست دانلود رو به هاست اصلی خودمون وصل می کنیم .
جناب موسوی امکانش هست کمی بیشتر راهنمایی کنید .

با تشکر

حسام موسوی ( 69306 تجربه )
7 ماه پیش

ما اصلا چیزی به اسم هاست دانلود نداریم اون هاست ها بخاطر پایین تر اوردن هزینه های شرکت های ایرانی ایجاد شدن و محدودیت های فوق العاده ای دارن پیشنهاد میکنم ازشون استفاده نکنید .
برای پیاد سازی کردن این موضوع باید قابلیت اجرا شدن اسکریپت داشته باشه .

همایون رضایی ( 157 تجربه )
7 ماه پیش

ممنونم از راهنمایی هاتون مهندس جان ...

جناب موسوی ! برای یک سایت فروش فایل مثلا سایت راکت . چه هاستی رو پیشنهاد می کنید ؟
اصلا خود راکت از چه جور هاستی استفاده می کنه ؟ فکر می کنم شما از سرور مجازی یا اختصاصی استفاده می کنید.

ممنونم میشم بنده رو برای انتخاب یک هاست مناسب جهت استفاده برای یک سایت فروش فایل راهنمایی کنید .

با تشکر ...

حسام موسوی ( 69306 تجربه )
7 ماه پیش

هاست های اشتراکی برای این موضوع خوب نیستند شما میتونید از یک vps استفاده کنید و کارها رو پیش ببرید.
البته باید از یک شرکت مناسب تهیه کنید که پشتیبانی خوب انجام بدن .

برای ارسال پاسخ باید وارد سایت شوید