چگونه حجم یک فایل درون سایت خود نمایش دهیم

چگونه حجم فایل های دانلودی در سایت نمایش دهیم

یکی از مواردی که بیشتر پرسیده میشود و درگیر آن هستند این هست که چگونه سایت های دانلود حجم فایل های دانلودی قرار میدهند آیا هربار دانلود میکنند تا ببینند چقدر هست ؟ 🙂 نه این یک شوخی بیش نیست

راه های متعدد برای اینکار وجود دارد که وردپرس هم یکی از این توابع دارا میباشد برای فایل های ضمیمه شده get_attached_file که کافیست شما آیدی فایل ضمیمه شده را ارسال کنید به تابع و خروجی آن نمایش دهید ( البته این راه مخصوص وردپرس هست )


get_attached_file( int $attachment_id, bool $unfiltered = false )

اگر فایل به صورت ریموت بود و فقط ما دسترسی به لینک آن داشتیم به چه صورت هست چون دیگه در وردپرس قرار ندارد که بخواهیم ID آن را پاس بدیم

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

<pre>

function remote_file_size($url){
    $head = "";
    $url_p = parse_url($url);
    $host = $url_p["host"];
    if(!preg_match("/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/",$host)){
	    $ip=gethostbyname($host);
	    if(!preg_match("/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/",$ip)){
		    return -1;
	    }
    }
    if(isset($url_p["port"]))
    $port = intval($url_p["port"]);
    else
    $port    =    80;
    if(!$port) $port=80;
    $path = $url_p["path"];
    $fp = fsockopen($host, $port, $errno, $errstr, 20);
    if(!$fp) {
	    return false;
	    } else {
	    fputs($fp, "HEAD "  . $url  . " HTTP/1.1\r\n");
	    fputs($fp, "HOST: " . $host . "\r\n");
	    fputs($fp, "User-Agent: http://www.example.com/my_application\r\n");
	    fputs($fp, "Connection: close\r\n\r\n");
	    $headers = "";
	    while (!feof($fp)) {
		    $headers .= fgets ($fp, 128);
		    }
	    }
    fclose ($fp);
    $return = -2;
    $arr_headers = explode("\n", $headers);
    foreach($arr_headers as $header) {
	    $s1 = "HTTP/1.1";
	    $s2 = "Content-Length: ";
	    $s3 = "Location: ";
	    if(substr(strtolower ($header), 0, strlen($s1)) == strtolower($s1)) $status = substr($header, strlen($s1));
	    if(substr(strtolower ($header), 0, strlen($s2)) == strtolower($s2)) $size   = substr($header, strlen($s2));
	    if(substr(strtolower ($header), 0, strlen($s3)) == strtolower($s3)) $newurl = substr($header, strlen($s3)); 
    }
    if(intval($size) > 0) {
	    $return=intval($size);
    } else {
	    $return=$status;
    }
    if (intval($status)==302 && strlen($newurl) > 0) {
	    $return = remote_file_size($newurl);
    }
    return $return;
}
</pre>

البته از تکه کد زیر هم میتوان استفاده کرد :

function retrieve_remote_file_size($url){
	 $ch = curl_init($url);
	 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	 curl_setopt($ch, CURLOPT_HEADER, TRUE);
	 curl_setopt($ch, CURLOPT_NOBODY, TRUE);
	 $data = curl_exec($ch);
	 $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
	 curl_close($ch);
	 return $size;
}

به هر دو تابع میتوانید لینک مورد نظر ارسال کنید تا محاسبه و خروجی برای شما نمایش دهد

021-91035462
هم اکنون تماس بگیرید