လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင်ဖိုင်များကိုအကောင်အထည်ဖော်ရန် FPASSTHRU ကိုမည်သို့အသုံးပြုရမည်နည်း

PHP တွင်ဖိုင်များကိုအကောင်အထည်ဖော်ရန် FPASSTHRU ကိုမည်သို့အသုံးပြုရမည်နည်း

gitbox 2025-05-28

PHP တွင် FPASSTHRU function သည်ဓာတ်ပုံများ, ဗွီဒီယိုများကိုဒေါင်းလုတ်လုပ်ခြင်း, ကူးယူခြင်းများကိုတိုက်ရိုက်ထုတ်ယူခြင်းမပြုဘဲဖိုင်များကိုဖြည့်ဆည်းခြင်းနှင့်မှတ်ဥာဏ်များချွေတာခြင်းနှင့်မှတ်ဉာဏ်ဖြည့်တင်းခြင်းနှင့်မှတ်ဉာဏ်ရေဖြည့်တင်းခြင်းများကိုထိရောက်စွာလွှဲပြောင်းနိုင်သည်။

ဤဆောင်းပါးသည် FPASSTHRU function ကို အသုံးပြု. File streaming ကိုအကောင်အထည်ဖော်ရန်မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။


FPASSTHRU ဆိုတာဘာလဲ။

FPASSTHRU သည် PHP file operty တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီး function သည်ဖိုင်အဆုံးအထိလက်ရှိဖိုင် pointer အနေအထားမှ output ကိုထုတ်လုပ်ရန်ဖြစ်သည်။ ၎င်းကို fopen နှင့် တွဲဖက်. အသုံးပြုလေ့ရှိသည်။ ဖိုင်ကိုဖွင့်ပြီးနောက်ဖိုင်အကြောင်းအရာများသည် browser ကိုတိုက်ရိုက်ထုတ်ပေးသည်။

function ရှေ့ပြေးပုံစံ:

 int fpassthru ( resource $handle )
  • $ လက်ကိုင် သည် fopen မှပြန်လာသောဖိုင်ညှိုးနွယ်အရင်းအမြစ်ဖြစ်သည်။

  • ပြန်လာတန်ဖိုးသည် bytes output ၏နံပါတ်ဖြစ်သည်။


ကြည့်ရှုပါ

  • ဖိုင်ကူးယူသည့် interface ကိုဖိုင်

  • ရုပ်ပုံသို့မဟုတ်ဗီဒီယိုစီးဆင်းမှု output

  • ဖိုင်များကို client သို့ပို့ရန်လိုအပ်သည့်မည်သည့်မြင်ကွင်းကိုမဆို


FPASSTHRU ကိုအသုံးပြုပြီးဖိုင် streaming ကိုအကောင်အထည်ဖော်ရန်အဆင့်များ

  1. ဖိုင်ကိုဖွင့်ပြီး <br> FOPEN () ဖိုင်ကို binary mode တွင်ဖွင့်ရန်ဖိုင်ကို binary mode တွင်ဖွင့်ရန်အသုံးပြုပါ။

  2. မှန်ကန်သော http header ကိုပို့ပါ ဖိုင်အမျိုးအစား (ဒေါင်းလုပ်လုပ်ထားသည့်ဖိုင်များ) နှင့်အညီ သက်ဆိုင်ရာ အကြောင်းအရာအမျိုးအစား ,

  3. FPASSTHRU ကို output file stream သို့ခေါ်ဆိုပါ ဖိုင်အကြောင်းအရာကို client သို့တိုက်ရိုက်တင်ပို့ပါ။

  4. File ResourceS <br> <br> အရင်းအမြစ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်အရင်းအမြစ်များကိုလွှတ်ပေးရန်။


နမူနာကုဒ်အပြည့်အစုံ

 <?php
// ဖိုင်လမ်းကြောင်း
$filePath = '/path/to/your/file.zip';

// ဖိုင်တည်ရှိရှိမရှိဆုံးဖြတ်ရန်
if (!file_exists($filePath)) {
    header("HTTP/1.1 404 Not Found");
    exit("File not found.");
}

// ဖိုင်ကိုဖွင့်ပါ
$fp = fopen($filePath, 'rb');
if (!$fp) {
    header("HTTP/1.1 500 Internal Server Error");
    exit("Failed to open file.");
}

// ဖိုင်အရွယ်အစားကိုရယူပါ
$fileSize = filesize($filePath);

// တည်ဆောက်သည် HTTP ဉီးခေါင်း,browser ဖိုင်အမျိုးအစားနှင့်အရွယ်အစားကိုပြောပြပါ
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($filePath) . '"');
header('Content-Length: ' . $fileSize);
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Expires: 0');

// အသုံးပြု fpassthru output ဖိုင်အကြောင်းအရာ
fpassthru($fp);

// File အရင်းအမြစ်များကိုပိတ်ပါ
fclose($fp);
exit;
?>

ကုဒ်ဖော်ပြချက်

  • FOPEN ($ filepathath, rb ') - ဖိုင်ကို binary read-in-by mode တွင်ဖွင့်ပါ။

  • HTTP header သည် browser သည်ဖိုင်အမျိုးအစားနှင့်အရွယ်အစားကိုအသိအမှတ်ပြုသည်

  • FPASSTHRU ($ FP) သည် အချက်အလက်အားလုံးကိုဖိုင်၏အဆုံးမှဖိုင်၏အဆုံးမှအချက်အလက်အားလုံးကိုတိုက်ရိုက်ထုတ်ယူလိမ့်မည်။

  • ဖိုင်လက်ကိုင်ကိုပိတ်ပြီးမလိုအပ်သောအကြောင်းအရာများသည် output ကိုသေချာစေရန်ထွက်ရန်ထွက်ပါ။


မှတ်သားရန်အရာ

  • အကယ်. ဖိုင်သည်ကြီးမားပါက FPASSTHRU သည် ဖိုင်များကိုမှတ်ဉာဏ်သို့မဖတ်နိုင်သောကြောင့်၎င်းကိုလွှဲပြောင်းရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။

  • ဖိုင်ကိုမှန်ကန်စွာကိုင်တွယ်ရန်သေချာစေရန်မပြောင်းမီသင့်လျော်သော http header ကိုသေချာစွာပေးပို့ပါ။

  • အကယ်. ဖိုင်လမ်းကြောင်းမှဖိုင်လမ်းကြောင်းမှဆင်းသက်လာပါကလမ်းကြောင်းဖြတ်ကူးစသည့်လုံခြုံရေးအန္တရာယ်များကိုကာကွယ်ရန်လုံခြုံရေးစစ်ဆေးမှုကိုသေချာအောင်လုပ်ပါ။

  • Breakpoint စဉ်ဆက်မပြတ်ထုတ်လွှင့်ရန်အထောက်အကူပြုသောလိုအပ်ချက်များအတွက်နောက်ထပ် http_range header လိုအပ်ကြောင်းနှင့်ဤဆောင်းပါးသည်အသေးစိတ်ရှင်းပြမည်မဟုတ်ပါ။


အကျဉ်းချုပ်

အထက်ပါအဆင့်များမှတစ်ဆင့် PHP ၏ FPASSTHRU function ကိုအလွယ်တကူအသုံးပြုနိုင်သည်။ ၎င်းသည် File download လုပ်ခြင်းနှင့်မီဒီယာ output အခြေအနေများအတွက်သင့်တော်သည်။

File Download interface သို့မဟုတ်မီဒီယာ streaming 0 န်ဆောင်မှုတစ်ခုတည်ဆောက်ရန်လိုအပ်ပါက FPASSTHRU ကို သင်ကြိုးစားကြည့်နိုင်သည်။