نمایش نتایج 1 تا 6 از 6

نام تاپیک: حجم یک فایل در اینترنت

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    Cool حجم یک فایل در اینترنت

    سلام

    می خواستم بدانم که چطور می شود یک فایل در اینترنت را حجم آن را با استفاده از FileLen بدست آورد.
    لطفا اگر می شود به طور روشن توضیح دهید
    باتشکر.

  2. #2

    نقل قول: حجم یک فایل در اینترنت

    دوست عزیز اصلا با تابع FileLen تمکان چنین کاری وجود ندارد

  3. #3
    کاربر دائمی آواتار parselearn
    تاریخ عضویت
    مهر 1386
    محل زندگی
    مشهد || parsa.ws
    پست
    1,147

    نقل قول: حجم یک فایل در اینترنت

    شما بايد تركيبي از برنامه نويسي وب و ويندوز رو انجام دهيد
    آدرس فايل رو به يك اسكريپت در اينترنت ارسال كنيد
    اون حجم رو حساب كنه
    خروجي بده...

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    دور نیست، همین نزدیکیا...
    سن
    31
    پست
    59

    نقل قول: حجم یک فایل در اینترنت

    نقل قول نوشته شده توسط www.pc3enter.tk مشاهده تاپیک
    سلام

    می خواستم بدانم که چطور می شود یک فایل در اینترنت را حجم آن را با استفاده از FileLen بدست آورد.
    لطفا اگر می شود به طور روشن توضیح دهید
    باتشکر.
    با سلام
    اين برنامه ي ساده يه آدرس ميگيره، و از سرور درخواست مي كنه كه حجم فايل رو بهش بده.

    موفق باشيد
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی آواتار ramzdar
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    رفسنجان
    پست
    243

    نقل قول: حجم یک فایل در اینترنت

    اگه میشه یه توضیح درباره کدهای این سورس و مخصوصاً کنترل Internet Transfer بدین که بفهمیم چی به چیه.

  6. #6
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: حجم یک فایل در اینترنت

    نقل قول نوشته شده توسط ramzdar مشاهده تاپیک
    اگه میشه یه توضیح درباره کدهای این سورس و مخصوصاً کنترل Internet Transfer بدین که بفهمیم چی به چیه.
    سلام،
    کنترل Inet یا Internet Transfer ابزاری ست که به سادگی امکان ارتباط برقرار کردن با یک وب سرور رو فراهم میکنه (هم از طریق HTTP و هم FTP). کنترل ساده و جمع و جوری هست.

    این کنترل، دو متود اصلی برای دانلود یک فایل داره با نام OpenURL و Execute که در این برنامه از متود Execute استفاده شده.
    از نوع مقداردهی آرگومان های این متود مشخص هست که پروتکل ارتباطی ما HTTP هست، چون هر چهار پارامتر مقداردهی شدند. (برای FTP نیازی به مقداردهی دو پارامتر آخر نیست)

    چون ارتباط HTTP هست، نیازی به Username و Password نداریم. در اول برنامه username و password رو خالی گذاشته. اصلاً این دو خط رو حذف کنید. نیازی به این کار نیست.

    URL رو هم در خط اول برنامه مقدار داده که همون آدرس فایل موردنظرمون هست. شما می تونید این خط رو هم حذف کنید، و URL رو از طریق آرگومان اول متود Execute وارد کنید، یعنی اینجوری:

    Inet.Execute Text1.Text, "GET", , "Range: bytes=" & "0-" & vbCrLf
    به هر حال URL رو باید به یکی از این دو شکل وارد کرد.

    توی TextBox که URL ما باشه نوشته شده:
    http://dl.finalmob.com/software/both/Photobook1.40.S60v3.S60v5.SymbianOS9x.2icon.unlimi  ted.trial.Cracked.by.ice.Angel_FinalMOB.com.exe
    http موجود در اول URL رو چه بزارید و چه نزاری فرقی نمی کنه در هر دو صورت ما داریم از http استفاده می کنیم.

    تو خطی که دستور Execute نوشته شده، پارامتر دوم یکی از پیغام هایی هست که میخوایم ارسال کنیم. در اینجا پیغام GET رو ارسال می کنیم. از GET اینجا برای گرفتن یک سری اطلاعات در مورد یک فایل روی سرور استفاده می کنیم. پیغام های مورد استفاده برای HTTP عبارتند از GET, POST، PUT و HEAD.

    حالا من نمی دونم چرا کسی که این برنامه رو نوشته، از دستور GET استفاده کرده! دستور GET برای دانلود کردن خود فایل هست و این کار باعث میشه فایل دانلود بشه تا جایی که بافر Inet ما پر بشه. فکر میکم سایز بافر هم حدود صد کیلوبایت باشه! (شاید هم بیشتر)
    در صورتی که اگه شما میخواید فقط سایز فایل رو بدست بیارید کافی هست فقط Header رو دریافت کنید. برای این کار از دستور HEAD استفاده می کنیم. پس بنابراین سرعت بسیار زیاد میشه و سریعتر به نتیجه میرسیم و فقط Header فایل رو دانلود می کنیم نه خود فایل. که سایز Header به صد بایت هم نمیرسه.
    پس دستور Execute رو به این شکل تغییر بدید تا وضعیت بهبود پیدا کنه:

    Inet.Execute , "HEAD"
    البته اگر سایز فایل خیلی زیاد هست، بهتر این هست که از همون GET استفاده بشه.

    چون متود Execute در Background اجرا میشه، کنترل برنامه سریعاً به خط بعد میره و سایر دستورات رو اجرا میکنه، در حالی که هنوز نتیجه درخواستمون از سرور رو دریافت نکردیم. پس باید یک جوری از اجرای سایر دستورات جلوگیزی کنیم تا جواب درخواستمون برسه. برای همین، از این حلقه استفاده شده:

    While Inet.StillExecuting
    DoEvents
    Wend
    که کاملاً مشخص هست داره چه اتفاقی میوفته و نیازی به توضیح نداره.

    در آخر هم با متود GetHeader بخشی از Header رو میخونیم و در متغیر میزاریم. اون بخشی که مربوط به سایز فایل هست. (Content_Lentgth). اندازه فایل بر حسب بایت هست که در آخر به KB تبدیل شده.

    موفق باشید/
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

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