همایون رضایی
4 سال پیش توسط همایون رضایی مطرح شد
5 پاسخ

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

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

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

    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 قرار می گیره رو به چه صورت بنویسم ؟
با تشکر ...


php
تگ‌های محبوب
لاراول
php
laravel
متفرقه
reactjs
عمومی
html_css
nodejs
vuejs
وردپرس
پایتون
css
فلاتر
react
javascript
ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
1

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


همایون رضایی
@raeisialireza110 4 سال پیش مطرح شد
0

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

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

با تشکر


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
1

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


همایون رضایی
@raeisialireza110 4 سال پیش مطرح شد
0

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

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

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

با تشکر ...


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
0

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


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام