PDA

View Full Version : سوال بسیار بسیار ساده ، خواهش میکنم جواب بدین



amirhossein.sh
دوشنبه 29 شهریور 1395, 19:50 عصر
سلام دوستان برنامه نویس ، من به مشکلی خوردم که مطمئنم شما میتوینن کمک کنید

من یه فانکشن دارم که میخوام اونو صدا بزنم ، فانکشنو به این صورت صدا میزنم



echo getFilesize('1.mp3')

تا اینجای کار همه چی ردیفه ، این دستور بهم حجم فایل 1.mp3 رو تحویل میده

حالا فرض کنید بخوام جای اینکه حجم فایل 1.mp3 رو بهم بده ، حجم لینکی که تو یه فانکشن دیگه ذخیره شده تحویل بده



get_field('link')

لینکمو به شکل بالا صدا میزنم

خب حالا من چجوری اینکارو بکنم ؟

Unique
دوشنبه 29 شهریور 1395, 21:03 عصر
راستش من سوالت را متوجه نشدم ! یعنی بد پرسیدی !!!!
میخوای حجم یک فایل روی اینترنت را به دست بیاری ؟! مثلا لین یک فایل mp3 را ؟

amirhossein.sh
دوشنبه 29 شهریور 1395, 21:20 عصر
راستش من سوالت را متوجه نشدم ! یعنی بد پرسیدی !!!!
میخوای حجم یک فایل روی اینترنت را به دست بیاری ؟! مثلا لین یک فایل mp3 را ؟

بذارین واضح تر بگم ، من از سیستم وردپرس استفاده میکنم ، از افزونه زمینه های دلخواه تو هر پست خودم یک لینک درج کردم ، با استفاده از دستور
get_field('link')
میتونم لینک خودمو تو هر پست صدا بزنم ، الان من میخوام حجم این لینکی که برای هر پست میذارمو نشون بدم

numberone1
دوشنبه 29 شهریور 1395, 22:56 عصر
سلام


$url = 'http://example.com/file.mp3';
$headers = get_headers($url, true);

if ( isset($headers['Content-Length']) ) {
$size = $headers['Content-Length'];
}

amirhossein.sh
دوشنبه 29 شهریور 1395, 23:25 عصر
سلام


$url = 'http://example.com/file.mp3';
$headers = get_headers($url, true);

if ( isset($headers['Content-Length']) ) {
$size = $headers['Content-Length'];
}


درود ، این دستور به چه واحدی حجمو نمایش میده ؟ من میخوام مگابایت باشه با یه رقم اعشار

Unique
سه شنبه 30 شهریور 1395, 11:26 صبح
البت هتجه داشته باش که همیشه ممکنه content-length توی header به هر دلیلی نباشه و باید شرط بگذاری برای چنین مواردی. حجمش را هم به هیچ وجه نمیتونی بدون دانلود کردن کل فایل به دست بیاری.

amirhossein.sh
سه شنبه 30 شهریور 1395, 13:32 عصر
شما این کدو لطفا ببینید



<?php/* * @param string $file Filepath * @param int $digits Digits to display * @return string|bool Size (KB, MB, GB, TB) or boolean */ function getFilesize($file, $digits = 2){ if (is_file($file)) { $filePath = $file; if (!realpath($filePath)) { $filePath = $_SERVER["DOCUMENT_ROOT"] . $filePath; } $fileSize = filesize($filePath); $sizes = array("TB", "GB", "MB", "KB", "B"); $total = count($sizes); while ($total-- && $fileSize > 1024) { $fileSize /= 1024; } return round($fileSize, $digits) . " " . $sizes[$total]; } return false;}
echo getFilesize('1.mp3');

?>

من میخوام دقیقا از همین کد استفاده کنم ، مشکلم اینه که میخوام به جای اینکه حجم فایل 1.mp3 رو بهم تحویل بده
حجم یه لینک فایل mp3 رو بهم برگردونه که لینکو توسط دستور
get_field('link')


میخوام بهش بدم

numberone1
سه شنبه 30 شهریور 1395, 14:32 عصر
درود ، این دستور به چه واحدی حجمو نمایش میده ؟ من میخوام مگابایت باشه با یه رقم اعشار

شما $headers و که یک آرایه هست با دستور print_r چاپ کن واحد اندازه گیری و بهت نشون میده
معمولا بایته
نکته دیگه اینکه ایین دستور وقتی آدرس فایل بصورت مستقیم داده بشه هدر ها کامل بر میگرده ولی اگر دانلود با لینک غیر مستقیم باشه احتمالا هدر صفحه بهت برمیگرده نه هدر فایل

amirhossein.sh
پنج شنبه 01 مهر 1395, 20:56 عصر
شما این کدو لطفا ببینید



<?php/* * @param string $file Filepath * @param int $digits Digits to display * @return string|bool Size (KB, MB, GB, TB) or boolean */ function getFilesize($file, $digits = 2){ if (is_file($file)) { $filePath = $file; if (!realpath($filePath)) { $filePath = $_SERVER["DOCUMENT_ROOT"] . $filePath; } $fileSize = filesize($filePath); $sizes = array("TB", "GB", "MB", "KB", "B"); $total = count($sizes); while ($total-- && $fileSize > 1024) { $fileSize /= 1024; } return round($fileSize, $digits) . " " . $sizes[$total]; } return false;}
echo getFilesize('1.mp3');

?>

من میخوام دقیقا از همین کد استفاده کنم ، مشکلم اینه که میخوام به جای اینکه حجم فایل 1.mp3 رو بهم تحویل بده
حجم یه لینک فایل mp3 رو بهم برگردونه که لینکو توسط دستور
get_field('link')


میخوام بهش بدم

ahadabasi
شنبه 03 مهر 1395, 11:24 صبح
شما میتونید این کار را با curl انجام بدید


$ch = curl_init('http://edu7.ir/images/posts/pRGZrQe5P1L5jmm2WP4uLBkXVDQnmo_1473345410.png');

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);
echo $size;


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

amirhossein.sh
شنبه 03 مهر 1395, 15:12 عصر
شما میتونید این کار را با curl انجام بدید


$ch = curl_init('http://edu7.ir/images/posts/pRGZrQe5P1L5jmm2WP4uLBkXVDQnmo_1473345410.png');

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);
echo $size;


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


اگه امکانش هست پاسخ سوال منو بدین ، میخوام با همون کد اینکارو انجام بدم

با تشکر