آژانس هواپیماییexchanging

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

شروع موضوع توسط peiman ‏18 جولای 2007 در انجمن PHP

  1. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    سلام

    یه لینک از یه فایل داریم. میخوایم فبل از دانلود رو سرور با دستور 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
    اما برای نوع فایل نمیدونم چه کار باید کنم.
     
  2. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    برای پسوند فایل میشه اینو استفاده كرد :
    PHP:
    $info pathinfo($url);
    echo 
    $info['extension'];
    البته پسوند همیشه نوع رو نشون نمیده ولی باز هم كمك بزرگی هست.
     
  3. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    برای نوع چیزی به ذهنت نمیرسه؟
    البته میشه دانلود کرد رو سرور و بعد بررسی کرد اما
    این که دارم مینویسم یه اسکریپت ریموت دانلود هست. که باید چک کنه حجم مجاز برای اون پسوند خاص رو و بعد مجوز دانلود رو بده!!

    به هر حال ممنون
     
  4. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    شما كه داری Content-Length رو بیرون میكشی بنابراین به راحتی میتونی Content-Type رو هم بخونی. mime-type و پسوند رو كه با هم چك كنی ضریب خطا میاد پایین ولی باز هم شاید 100 درصد نباشه.
     
  5. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    خودمم دارم روش کار میکنم
    نمیشه mime-type رو مستقیم از فایل در بیارم؟ همون Content-Type بنویسم به جای Content-Length کافیه؟
     
  6. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    این روشی كه شما استفاده كردی رو دفعه اوله دارم میبینم. (خیلی هم برام جالبه). این میاد header های request به سروری كه فایل توش هست رو میخونه و با preg_match اطلاعات رو میكشه بیرون. حالا Content-Lenght رو اون شكل در آوره. بنابراین Content-Type هم دقیقاً با همون كد باید بشه درآورد. من فكر میكنم به احتمال قوی كار كنه.
     
  7. appbannerkhuniresbanner
  8. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    من دارم اینجا حروم میشم!!کلی ابتکار به خرج میدیم آخرش هیچی به هیچی!! درکمون نمیکنن دیگه!! :D
    //
    با Content-Type خالی نمیشه!!باید ریگولار ... (فک کنم عبارت باقاعده) هم باید اصلاح بشه!! میدونی نوع فایل تو کجای header هست؟!
     
  9. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    من گفتم که تا به حال این روش رو ندیدم. شما می تونی با یک echo ببینی چی خوندی یا توی یک فایل ذخیره کنی (file_put_contents). بعد نگاه میکنی ببینی Content-Type کجاست و regex اون چی میشه. اگه احیاناً مشکلی بود header رو بذار اینجا ببینیم regex ش چی میشه.
     
  10. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    شرمنده دیر شد
    این نمیدونم چرا ایمیل برام نفرستاده که کسی جواب داد بهم!!
    //
    این هدرشه:
    کد:
    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 
    
    تهش نوع فایلو مینویسه!!
    میتونی براش یه عبارت با قاعده بنویسی؟!

    ممنون
     
  11. peiman

    peiman Registered User

    تاریخ عضویت:
    ‏23 فوریه 2003
    نوشته ها:
    1,544
    تشکر شده:
    20
    اینو میدونی چیه؟
    کد:
    ETag: "0-51e1-469619f2"
    تو همون هدره هست!!
    بقیه رو میدونم اما این چه کار میکنه؟!
     
  12. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    اگه تهش مینویسه یه همچین چیزی میشه
    کد:
    Content-Type: (.*?)$
    در مورد ETag من هم نمیدونستم چیه و تو گوگل گشتم. ظاهراً کارش اینه که به هر درخواست یک Entity Tag (مثلاً میشه کد مدخل) میده که سرور فرق دو تا درخواست که یک URL رو میخوان تشخیص بده و برای هر کدوم صفحه مجزا بفرسته. فکر نکنم به درد ما بخوره.