လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FPASSTHRU function မှတစ်ဆင့် compressed files များသို့ compressed files များသို့ပို့ရန်လက်တွေ့ကျသောနည်းလမ်းများနှင့်ကြိုတင်ကာကွယ်မှုများကဘာတွေလဲ။

FPASSTHRU function မှတစ်ဆင့် compressed files များသို့ compressed files များသို့ပို့ရန်လက်တွေ့ကျသောနည်းလမ်းများနှင့်ကြိုတင်ကာကွယ်မှုများကဘာတွေလဲ။

gitbox 2025-09-12

<?php // ဆောင်းပါးစတင်ခဲ့သည် ပဲ့တင်သံ "

FPASSTHRU function မှတဆင့် browser ကို browser သို့ compressed files များသို့ပို့ရန်လက်တွေ့ကျသောနည်းလမ်းများနှင့်ကြိုတင်ကာကွယ်မှုများကဘာလဲ။

"
; ပဲ့တင်သံ

PHP Development တွင် download လုပ်သူများအတွက် browser (zip, gz စသည်တို့) ကို download လုပ်ခြင်းသည်ဖိုင်တစ်ခုလုံးကို Memory သို့ပို့ဆောင်ခြင်းမပြုဘဲဖိုင်များနှင့် output ကိုဖိုင်များသို့တိုက်ရိုက်ဖတ်ရန်။

"
; ပဲ့တင်သံ "

1 ။ FPASSTHRU ၏အခြေခံအသုံးပြုမှု

"
; ပဲ့တင်သံ

FPASSTHRU ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

"
; ပဲ့တင်သံ "
int fpassthru (အရင်းအမြစ် \ $ လက်ကိုင်)
"
;
ပဲ့တင်သံ "ဖိုင်ရဲ့အ ဆုံး

အထိဖိုင်ကိုကိုင်တွယ် ပြီးဖိုင်ကို browser သို့တိုက်ရိုက်ထုတ်ပေးသည်။

ပဲ့တင်သံ "

2 ။ browser ကို compressed files များပို့ရန်ခြေလှမ်းများ

"
; ပဲ့တင်သံ
    "
ပဲ့တင်သံ
  • မှန်ကန်သော HTTP Header ကိုသတ်မှတ်ပါ - ဤသည် browser ကဒီဖိုင်ကို download ရယူရန်တောင်းဆိုချက်ကိုသိအောင်သေချာအောင်လုပ်ပါ။
  • "
    ; ပဲ့တင်သံ "
  • ပွင့်လင်းတဲ့ဖိုင် - သင်ပို့ရန်လိုအပ်သည့် compressed file ကိုဖွင့်ရန် fopen ကို သုံးပါ။
  • "
    ; ပဲ့တင်သံ
  • FPASSTHRU ကိုအသုံးပြုပါဖိုင်အိတ်အကြောင်းအရာများကို output လုပ်ရန် - ဖိုင်အကြောင်းအရာကို browser သို့တိုက်ရိုက်လွှဲပြောင်းပါ။
  • "
    ; ပဲ့တင်သံ "
  • ဖိုင်ညွှန်ပြမှုကိုပိတ်ပါ။ သယံဇာတများကိုအခမဲ့ရယူပါ။
  • "
    ; ပဲ့တင်သံ " ပဲ့တင်သံ "

    နမူနာကုဒ်:

    "
    ; ပဲ့တင်သံ "
    \ $ file = &#39;applue.zip&#39;;
    if (file_exists (\ $ ဖိုင်))
        header (&#39;အကြောင်းအရာ - ဖော်ပြချက် - ဖိုင်လွှဲပြောင်းခြင်း&#39;);
        header (&#39;အကြောင်းအရာအမျိုးအစား: လျှောက်လွှာ / zip&#39;);
        header (&#39;အကြောင်းအရာ - စိတ်ထား - ပူးတွဲမှု - ပူးတွဲဖိုင် = \ "\&#39; &#39;။ Basename (\ $ file) ။
        header (&#39;အကြောင်းအရာ - လွှဲပြောင်း-encoding: binary&#39;);
        header (&#39;အကြောင်းအရာ - အရှည်:&#39; ။ ဖိုင် (\ $ file));
    
        \ $ fp = fopen (\ $ ဖိုင်, &#39;rb&#39;);
        လျှင် (\ $ FP) {
            FPASSTHRU (\ $ FP);
            fcose (\ $ FP);
            ထွက်ပေါက်;
        }
    }
    
    "
    ;
    ပဲ့တင်သံ "

    သုံးလက်တွေ့နည်းလမ်းများ

    "
    ; ပဲ့တင်သံ
      "
    ပဲ့တင်သံ "
  • ကြီးမားသောဖိုင်များကိုမှတ်ဉာဏ်ထဲသို့မတင်စေရန် Readfile သို့မဟုတ် FPASSTHRU တို့ကို အသုံးပြုပါ။
  • "
    ; ပဲ့တင်သံ "
  • ob_clean () နှင့် flush () နှင့် flush () နှင့်ပေါင်းစပ်ထားသော flacter ထုတ်လွှင့်မှုကိုသေချာစေရန် Output Buffer ကိုသန့်ရှင်းရေးလုပ်ရန်။
  • "
    ; ပဲ့တင်သံ "
  • download အတွေ့အကြုံကိုတိုးတက်စေရန်အတွက် အကြောင်းအရာများ မှတစ်ဆင့်ကြိုတင်ဘရောက်ဇာဖိုင်အရွယ်အစားကိုကြိုတင်အကြောင်းကြားပါ။
  • "
    ; ပဲ့တင်သံ "
  • အချိန်ကုန်ခြင်းများကိုအတုံးများဖြင့်ဖတ်နိုင်ပြီး output ကို funkout လုပ်ရန် set_time_limit (0) ကို သုံးပါ။
  • "
    ; ပဲ့တင်သံ " ပဲ့တင်သံ "

    IV ။ မှတ်သားရမည့်အရာများ

    "
    ; ပဲ့တင်သံ
      "
    ပဲ့တင်သံ
  • ဖိုင်ကိုမပို့မီနေရာများနှင့် HTML တို့အပါအ 0 င် output အပါအ 0 င် output မရှိပါ။ သို့မဟုတ်လျှင် HTTP ခေါင်းစီးကျိုးပဲ့လိမ့်မည်။
  • "
    ; ပဲ့တင်သံ "
  • zip application / zip ကို အသုံးပြုသော MIME အမျိုးအစားကိုမှန်ကန်စွာသတ်မှတ်ပါ
  • ပဲ့တင်သံ
  • ဆာဗာခွင့်ပြုချက်များသည် PHP ကိုပစ်မှတ်ဖိုင်ကိုဖတ်ရန်ခွင့်ပြုရန်လိုအပ်သည်။
  • "
    ; ပဲ့တင်သံ "
  • ကြီးမားသောဖိုင်များကိုဒေါင်းလုတ်လုပ်သောအခါ Bandwidth ကန့်သတ်ချက်နှင့်အချိန်ကုန်ချိန်ညှိချက်များကိုစဉ်းစားပါ။
  • "
    ; ပဲ့တင်သံ " ပဲ့တင်သံ "

    ငါး, အကျဉ်းချုပ်

    "
    ; ပဲ့တင်သံ "

    FPASSTHRU ကိုအသုံးပြုခြင်းသည်အလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားရန်ဆာဗာပေါ်ရှိ compressed files များကိုထိထိရောက်ရောက်ပေးပို့နိုင်သည်။ အသုံးပြုမှုစဉ်အတွင်း http header settings, output buffer processings ကဲ့သို့သောပြ issues နာများကိုသင်အာရုံစိုက်ရန်လိုအပ်သည်။ ဤကျွမ်းကျင်မှုများကိုကျွမ်းကျင်စွာအာရုံစိုက်ရန်လိုအပ်သည်

    // ဆောင်းပါး၏အဆုံး >