التغطية المصورة ليوم سوالف: الجزء الأول، الجزء الأخير
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > تطوير الويب
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
Banned
تاريخ التسجيل: Jun 2005-
#1 (permalink)  
ممكن طريقة جلب حجم ملف معين في النت؟؟


السلام عليكم ورحمة الله


اخواني مافي دالة تجيب حجم ملف معين في النت

يعني لو وضعت http://alawar.com/download/StrikeBall.exe

تجيب لي حجم StrikeBall.exe
اذا مافي دالة ممكن اي طريقة؟؟
انا حاليا استخدم هذي الطريقة بس معقدة و ما تعمل إلا بشروط

كود PHP:
 function remote_filesize($uri){
   
$url_p parse_url ($uri);
   
$host $url_p['host'];
   if(isset (
$url_p['port']))
     
$remote_port $url_p['port'];
   else
     
$remote_port 80;

   
$fp = @fsockopen ($host$remote_port);
   if(!
$fp){

    return 
0;

   }else
   {
     
fputs($fp'HEAD '.$uri." HTTP/1.1\r\n");
     
fputs($fp'HOST: '.$host."\r\n");
     
fputs($fp"Connection: close\r\n\r\n");
     
$headers '';
     while (!
feof ($fp))
       
$headers .= fgets ($fp128);
   }
   
fclose ($fp);

   if (
preg_match('/Content-Length:\s([0-9].+?)\s/'$headers$matches))
     return 
$matches[1];
   else
     return 
0;

  } 
ممكن حد يعطيني طريقة اسهل وعملية اكثر






7addad غير متواجد حالياً   قديم 03-08-2005, 02:23 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Dec 2004-
#2 (permalink)  

كود PHP:
<?php

function filesize_url($url){
   return (
$data = @file_get_contents($url)) ? strlen($data) : false;
}

?>
Use that function to return a size of an file from an URL or local file.

usage:

كود PHP:
<?php
echo ($fsize filesize_url($url))  ? $fsize "URL or local file does not exist or read";
?>
http://www.php.net/manual/en/functio...size.php#54358






__________________
....
محمد حسام
انترنت بلس
إنترنت بلس غير متواجد حالياً   قديم 03-08-2005, 02:42 AM
رد مع اقتباس
Banned
تاريخ التسجيل: Jun 2005-
#3 (permalink)  

اخوي إنترنت بلس هذي الدالة ما تعطي حجم الملف بل طول الداتا

جربتها على ثلاث ملفات
1- حجما 100 كيلو بايت الدالة عطني انو حجما 27 kb
2- حجما 10 mp الدالة عطني حجما 10.6 mp
3- حجما 2.5 mp الدالة عطني حجما 557 byet

فياريت تجوف لي دالة ثانية






7addad غير متواجد حالياً   قديم 03-08-2005, 03:16 AM
رد مع اقتباس
Banned
تاريخ التسجيل: Jun 2005-
#4 (permalink)  

للرفع






7addad غير متواجد حالياً   قديم 03-08-2005, 05:28 PM
رد مع اقتباس
Banned
تاريخ التسجيل: Jun 2005-
#5 (permalink)  

للرفع






7addad غير متواجد حالياً   قديم 04-08-2005, 05:23 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Dec 2004-
#6 (permalink)  

اخوي 7addad الكود الي كتبه انترنت بلس مضبوط 100%
ولكنه يظهر حجم الملف بالByts اذا قسمناها على 1024 تطلع النتيجه بالKB
وهذا تعديل صغير ومثال للكود ... يطبع حجم الاعلان الموجود بمنتدى سوالف


كود:
<?php 

function filesize_url($url){ 
   return ($data = @file_get_contents($url)) ? strlen($data) : false; 
} 

$url="http://www.swalif.net/banner/mega1000.gif";
if ($fsize = filesize_url($url)) 
{
$fsize=explode(".",$fsize/1024);
echo $fsize[0].".".substr($fsize[1],0,3)." KB";
}
else echo "URL or local file does not exist or read"; 
?>
تحياتي






Lumenore غير متواجد حالياً   قديم 04-08-2005, 06:14 PM
رد مع اقتباس
Banned
تاريخ التسجيل: Jun 2005-
#7 (permalink)  

اخوي Lumenore اذا استخدمت @file_get_contents($url)) يعني لازم سنعمل للملف المطلوب تحميل

هذي الدالة تحمل الملف في السيرفر و بعدين تعطي الحجم مثلها مثل دالة readfile();






7addad غير متواجد حالياً   قديم 05-08-2005, 02:45 AM
رد مع اقتباس
مشرف قسم تطوير المواقع
تاريخ التسجيل: Feb 2003-
#8 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة 7addad
اخوي Lumenore اذا استخدمت @file_get_contents($url)) يعني لازم سنعمل للملف المطلوب تحميل

هذي الدالة تحمل الملف في السيرفر و بعدين تعطي الحجم مثلها مثل دالة readfile();

؟
يعني انت تريد دالة تعطيك حجم الملف و هو موجود في السيرفر الأخر و دون تنزيله على سيرفرك لمعرفة حجمه ؟

هذا شبه مستحيل أخي الكريم

تفسيري المنطقي :
انت عندما تحتاج لمعرفة حجم الملف و هو في سيرفر اخر ؟ كيف ستتم العملية ؟
تتم العملية منطقيا بتنزيل الملف عندك لمعرفة البايتات المستهلكة و المنزلة و من ثم بإمكانك تقدير الحجم
اما اذا أردت ان تعرف حجم ملف موجود على سيرفر أخر فيجب ان يكون لديك صلاحية دخول للسيرفر ( FTP / ... ) عندها تتم العملية بالدخول على السيرفر و تحديد الملف و تنفذ عليه CMD تخرج من خلالها حجم الملف

اما غير هذا فيجب تنزيل الملف

هذا رأي في الحكاية
والله اعلم






__________________
-{Only God Can Judge Me}-
القانون فوق الجميع و الجميع يموت بالجوع
Dr-dre67 غير متواجد حالياً   قديم 05-08-2005, 02:54 AM
رد مع اقتباس
مراقب و خبير سيرفرات لينكس
تاريخ التسجيل: Mar 2001-
#9 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة Dr-dre67
؟
يعني انت تريد دالة تعطيك حجم الملف و هو موجود في السيرفر الأخر و دون تنزيله على سيرفرك لمعرفة حجمه ؟

هذا شبه مستحيل أخي الكريم

والله اعلم

السلام عليكم

لا اعتقد ان هذا مستحيل ولا كيف الغيت رايت و الداونلود اكسلليتر والويندوز ايضا
لما تجي تعمل داون لود لملف يعطيك حجمة مع انك لم تقم بتنزيلة .
القصة بالهيدر تبع الفايل ...
يجب ان تقرا البيتات الاولى وهي تحوي نوع الملف و طولة وكل شيء
الكريقة لا اعرفها ولكن انا احلل بشكل منطقي .






beshoo غير متواجد حالياً   قديم 05-08-2005, 03:06 AM
رد مع اقتباس
مشرف قسم تطوير المواقع
تاريخ التسجيل: Feb 2003-
#10 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة beshoo
السلام عليكم

لا اعتقد ان هذا مستحيل ولا كيف الغيت رايت و الداونلود اكسلليتر والويندوز ايضا
لما تجي تعمل داون لود لملف يعطيك حجمة مع انك لم تقم بتنزيلة .
القصة بالهيدر تبع الفايل ...
يجب ان تقرا البيتات الاولى وهي تحوي نوع الملف و طولة وكل شيء
الكريقة لا اعرفها ولكن انا احلل بشكل منطقي .
ربما

و جاري البحث






__________________
-{Only God Can Judge Me}-
القانون فوق الجميع و الجميع يموت بالجوع
Dr-dre67 غير متواجد حالياً   قديم 05-08-2005, 03:08 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Dec 2004-
#11 (permalink)  

بشار ..
فكرتك منطقية
هاشم ..
عايزين نفهم الكود اللي في المرفقات
من هنا:
http://www.php-editors.com/contest/1/33-read.html

جربتها راااااااااااااااائعة ..






الملفات المرفقة
نوع الملف: zip remote_file_size.zip‏ (616 بايت, المشاهدات 57)
__________________
....
محمد حسام
انترنت بلس
إنترنت بلس غير متواجد حالياً   قديم 05-08-2005, 03:40 AM
رد مع اقتباس
مشرف قسم تطوير المواقع
تاريخ التسجيل: Feb 2003-
#12 (permalink)  

http://www.httprevealer.com/usage_accelerator.htm

هنا الطريقة التي يستعملها برامج تحميل الملفات

نلحظ انه يعتمدون على HTTP response و بالمتغير Content-Length
في تحديد حجم الملف






__________________
-{Only God Can Judge Me}-
القانون فوق الجميع و الجميع يموت بالجوع
Dr-dre67 غير متواجد حالياً   قديم 05-08-2005, 03:46 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Dec 2004-
#13 (permalink)  

إذن أعتقد أن طريقة السكريبت هي نفس الطريقة .. لأنه يقرأ الهيدرز بطريقة ما .. صح؟






__________________
....
محمد حسام
انترنت بلس
إنترنت بلس غير متواجد حالياً   قديم 05-08-2005, 04:08 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Feb 2002-
#14 (permalink)  

انا استخدم هذه الدالة أحيانا

كود PHP:
function remoteFilesize($url){

   
$file = @fopen($url'rb');
   
$buffer "";

   while(!
feof($file))
   {
       
$buffer .= fread($file,1024);
   }

   return 
strlen($buffer);

بالتوفيق






__________________
شبكة مملكة العرب
---------------------
استضافة مواقع تبدأ من 100 ريال سنويا
خطط خاصة للموزعين
سكربت دليل المواقع
www.aknet.com
code4arab غير متواجد حالياً   قديم 05-08-2005, 04:13 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Dec 2004-
#15 (permalink)  

هذه هي الدالة الأصلية .. لكنها تقرأ محتويات كل ملف لتعطيك حجمه .. الدالة الجديدة لا تقرأ الملف كاملا ..






__________________
....
محمد حسام
انترنت بلس
إنترنت بلس غير متواجد حالياً   قديم 05-08-2005, 04:17 AM
رد مع اقتباس
Banned
تاريخ التسجيل: Jun 2005-
#16 (permalink)  

اخوي code4arab الكود مادري شيعطي بس موب الحجم

اخوي Dr-dre67 كلامك صحيح لكن موب كل ملف يعطي في الهيدر Content-Length:

جرب هذي الدالة على عدة روابط و بتشوف بعضهم يعطيك الهيدر في Content-Length: و بعضهم لا
كود PHP:
function remote_filesize($uri){
   
$url_p parse_url ($uri);
   
$host $url_p['host'];
   if(isset (
$url_p['port']))
     
$remote_port $url_p['port'];
   else
     
$remote_port 80;

   
$fp = @fsockopen ($host$remote_port);
   if(!
$fp)
     return 
0;
   else
   {
     
fputs($fp'HEAD '.$uri." HTTP/1.1\r\n");
     
fputs($fp'HOST: '.$host."\r\n");
     
fputs($fp"Connection: close\r\n\r\n");
     
$headers '';
     while (!
feof ($fp))
       
$headers .= fgets ($fp128);
   }
   
fclose ($fp);
  echo 
$headers;
  } 






7addad غير متواجد حالياً   قديم 05-08-2005, 09:44 AM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 11:30 AM بتوقيت المملكة العربية السعودية