برگزیده های پرشین تولز

وجود وحجم و نوع فایلی که رو سرور نیست

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
سلام

یه لینک از یه فایل داریم. میخوایم فبل از دانلود رو سرور با دستور copy مشخصات اونو ببینیم:
1-فایل وجود داره؟
2-اگه وجود تاره چه نوعی هست؟
3-سایزش چقدره؟

ممنون میشم راهنماییم کنید.

خودم الان برای سوال یک وسه از این کد استفاده میکنم!:
PHP:
// Posted by Alcapone of Devshed 
// http://www.realxl.net/ 

$url='http://www.blah.net/movie.mpg'; 
$addy=parse_url($url); 
$addy['port']=isset($addy['port'])?$addy['port']:80; 
$sh=fsockopen($addy['host'],$addy['port']) or die('cant open socket'); 
fputs($sh,"HEAD {$addy['path']} HTTP/1.1\r\nHost: {$addy['host']}\r\n\r\n"); 
while($line=fgets($sh)) 
if(preg_match('/^Content-Length: (.{0,})/',$line,$m))  
$size=$m[1]; 
echo isset($size)?"size of $url file is $size": 'no such file: '.$url;

اما برای نوع فایل نمیدونم چه کار باید کنم.
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
برای پسوند فایل میشه اینو استفاده كرد :
PHP:
$info = pathinfo($url);
echo $info['extension'];

البته پسوند همیشه نوع رو نشون نمیده ولی باز هم كمك بزرگی هست.
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
برای نوع چیزی به ذهنت نمیرسه؟
البته میشه دانلود کرد رو سرور و بعد بررسی کرد اما
این که دارم مینویسم یه اسکریپت ریموت دانلود هست. که باید چک کنه حجم مجاز برای اون پسوند خاص رو و بعد مجوز دانلود رو بده!!

به هر حال ممنون
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
شما كه داری Content-Length رو بیرون میكشی بنابراین به راحتی میتونی Content-Type رو هم بخونی. mime-type و پسوند رو كه با هم چك كنی ضریب خطا میاد پایین ولی باز هم شاید 100 درصد نباشه.
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
شما كه داری Content-Length رو بیرون میكشی بنابراین به راحتی میتونی Content-Type رو هم بخونی. mime-type و پسوند رو كه با هم چك كنی ضریب خطا میاد پایین ولی باز هم شاید 100 درصد نباشه.
خودمم دارم روش کار میکنم
نمیشه mime-type رو مستقیم از فایل در بیارم؟ همون Content-Type بنویسم به جای Content-Length کافیه؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
خودمم دارم روش کار میکنم
نمیشه mime-type رو مستقیم از فایل در بیارم؟ همون Content-Type بنویسم به جای Content-Length کافیه؟
این روشی كه شما استفاده كردی رو دفعه اوله دارم میبینم. (خیلی هم برام جالبه). این میاد header های request به سروری كه فایل توش هست رو میخونه و با preg_match اطلاعات رو میكشه بیرون. حالا Content-Lenght رو اون شكل در آوره. بنابراین Content-Type هم دقیقاً با همون كد باید بشه درآورد. من فكر میكنم به احتمال قوی كار كنه.
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
این روشی كه شما استفاده كردی رو دفعه اوله دارم میبینم. (خیلی هم برام جالبه). این میاد header های request به سروری كه فایل توش هست رو میخونه و با preg_match اطلاعات رو میكشه بیرون. حالا Content-Lenght رو اون شكل در آوره. بنابراین Content-Type هم دقیقاً با همون كد باید بشه درآورد. من فكر میكنم به احتمال قوی كار كنه.
من دارم اینجا حروم میشم!!کلی ابتکار به خرج میدیم آخرش هیچی به هیچی!! درکمون نمیکنن دیگه!! :D
//
با Content-Type خالی نمیشه!!باید ریگولار ... (فک کنم عبارت باقاعده) هم باید اصلاح بشه!! میدونی نوع فایل تو کجای header هست؟!
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
من دارم اینجا حروم میشم!!کلی ابتکار به خرج میدیم آخرش هیچی به هیچی!! درکمون نمیکنن دیگه!! :D
//
با Content-Type خالی نمیشه!!باید ریگولار ... (فک کنم عبارت باقاعده) هم باید اصلاح بشه!! میدونی نوع فایل تو کجای header هست؟!

من گفتم که تا به حال این روش رو ندیدم. شما می تونی با یک echo ببینی چی خوندی یا توی یک فایل ذخیره کنی (file_put_contents). بعد نگاه میکنی ببینی Content-Type کجاست و regex اون چی میشه. اگه احیاناً مشکلی بود header رو بذار اینجا ببینیم regex ش چی میشه.
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
من گفتم که تا به حال این روش رو ندیدم. شما می تونی با یک echo ببینی چی خوندی یا توی یک فایل ذخیره کنی (file_put_contents). بعد نگاه میکنی ببینی Content-Type کجاست و regex اون چی میشه. اگه احیاناً مشکلی بود header رو بذار اینجا ببینیم regex ش چی میشه.

شرمنده دیر شد
این نمیدونم چرا ایمیل برام نفرستاده که کسی جواب داد بهم!!
//
این هدرشه:
کد:
HTTP/1.1 200 OK Date: Mon, 23 Jul 2007 19:23:44 GMT Server: Apache/1.3.33 (Win32) PHP/4.3.10 Last-Modified: Thu, 12 Jul 2007 12:09:22 GMT ETag: "0-51e1-469619f2" Accept-Ranges: bytes Content-Length: 20961 Content-Type: image/gif
تهش نوع فایلو مینویسه!!
میتونی براش یه عبارت با قاعده بنویسی؟!

ممنون
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
اینو میدونی چیه؟
کد:
ETag: "0-51e1-469619f2"

تو همون هدره هست!!
بقیه رو میدونم اما این چه کار میکنه؟!
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
شرمنده دیر شد
این نمیدونم چرا ایمیل برام نفرستاده که کسی جواب داد بهم!!
//
این هدرشه:
کد:
HTTP/1.1 200 OK Date: Mon, 23 Jul 2007 19:23:44 GMT Server: Apache/1.3.33 (Win32) PHP/4.3.10 Last-Modified: Thu, 12 Jul 2007 12:09:22 GMT ETag: "0-51e1-469619f2" Accept-Ranges: bytes Content-Length: 20961 Content-Type: image/gif
تهش نوع فایلو مینویسه!!
میتونی براش یه عبارت با قاعده بنویسی؟!

ممنون
اگه تهش مینویسه یه همچین چیزی میشه
کد:
Content-Type: (.*?)$

در مورد ETag من هم نمیدونستم چیه و تو گوگل گشتم. ظاهراً کارش اینه که به هر درخواست یک Entity Tag (مثلاً میشه کد مدخل) میده که سرور فرق دو تا درخواست که یک URL رو میخوان تشخیص بده و برای هر کدوم صفحه مجزا بفرسته. فکر نکنم به درد ما بخوره.
 
بالا