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

این تاپیک 0 پاسخ و 1 مشارکت کننده دارد . آخرین آپدیت توسط :  Alireza Raeisi ،‏ 3 ماه و 2 هفته پیش .

۶۲ visibility
نویسنده پست
جمعه ، ۱۸ اسفند ۱۳۹۶     ۶:۱۴ ب.ظ #


Alireza Raeisi

Subscriber
0 پست1 تاپیک

با سلام و وقت بخیر

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

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 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;
}
}

0  تشکر
پست 1 تا 1 (از مجموع 1 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .