0 က်ဘ်ဆိုက်ဖွံ့ဖြိုးတိုးတက်မှုများစွာတွင်အသုံးပြုသူများသည်ဖိုင်များကို download လုပ်ရန်လိုအပ်နိုင်သည်။ PHP မှပေးသော header function ကို အသုံးပြု. ဖိုင်၏ download be beurner ကိုထိန်းချုပ်ရန် HTTP တုန့်ပြန်မှုခေါင်းစဉ်ကိုအလွယ်တကူသတ်မှတ်နိုင်သည်။ ဒီသင်ခန်းစာမှာ PHP ရဲ့ header function ကိုသုံးပြီး download လုပ်ထားသောဖိုင်အမည်ကိုသတ်မှတ်ရန် Content-header function ကို အသုံးပြုနည်းကိုမိတ်ဆက်ပေးမည်။
Content-Desefultion ဆိုသည်မှာ http header တစ်ခုဖြစ်ပြီး browser ကိုမည်သို့လုပ်ဆောင်ရမည်ကိုပြောသော http header ဖြစ်သည်။ အသုံးအများဆုံးအသုံးပြုမှုမှာဖိုင်ကို browser ပေါ်တွင် download download လုပ်ခြင်းကိုစတင်ရန်နှင့် download လုပ်ထားသောဖိုင်အတွက်ဖိုင်အမည်ကိုသတ်မှတ်ရန်ဖြစ်သည်။ ၎င်းကိုများသောအားဖြင့် content-type ဖြင့်အသုံးပြုသည်။ ၎င်းသည်ဖိုင်၏အကြောင်းအရာအမျိုးအစားကိုမည်သို့အနက်ဖွင့်ရမည်ကိုဘရောက်ဇာကိုပြောပြသည်။
HTTP ခေါင်းစီးများကိုပို့ရန် HTTP headers များကိုပို့ရန် HTTER function ကိုအသုံးပြုနိုင်သည်။ ဖိုင်ကိုဖိုင်ကိုဒေါင်းလုပ်လုပ်သည့်အခါဖိုင်အမည်ကိုသတ်မှတ်လိုပါက အကြောင်းအရာ - သဘောထား ခေါင်းစီးကိုသတ်မှတ်နိုင်သည်။ ဤတွင်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။
<?php
// ဖိုင်လမ်းကြောင်းကိုသတ်မှတ်ပါ
$file = 'path/to/your/file.txt';
// ဖိုင်တည်ရှိသေချာအောင်လုပ်ပါ
if (file_exists($file)) {
// မှန်ကန်သောအကြောင်းအရာအမျိုးအစားကိုသတ်မှတ်ပါ,ဤသည် download file တစ်ခုဖြစ်သော browser ကိုပြောပါ
header('Content-Type: application/octet-stream');
// တည်ဆောက်သည် Content-Disposition ဉီးခေါင်း,ဖိုင်ကို download လုပ်သည့်အခါဖိုင်အမည်ကိုသတ်မှတ်ပါ
header('Content-Disposition: attachment; filename="downloaded_file.txt"');
// တည်ဆောက်သည်文件大小
header('Content-Length: ' . filesize($file));
// ဖတ်ပြီး output ဖိုင်အကြောင်းအရာ
readfile($file);
exit;
} else {
echo "ဖိုင်မတည်ရှိပါဘူး!";
}
?>
header ('အကြောင်းအရာအမျိုးအစား: လျှောက်လွှာ / octet-stream'); ဖြေ - ဒီကုဒ်လိုင်းက binary file ကို download လုပ်ပြီးအလိုအလျောက်ဖွင့်လို့မရတော့ဘူး။
header ('အကြောင်းအရာ - သဘောထား - ပူးတွဲမှု - ပူးတွဲမှု, filename = "downloaded_file.txt"); ဖြေ - ဒီကုဒ်နံပါတ်ကဖိုင်ကို ပူးတွဲဖိုင် အဖြစ်ဒေါင်းလုပ်လုပ်ပြီး download လုပ်ထားတယ်။ ဖိုင်ကို download လုပ်ထားသောအမည် "download လုပ်ထားတဲ့ download_file.txt" ကိုသတ်မှတ်ပေးတယ်။
header ('အကြောင်းအရာ - အရှည်:' ။ ။ ဖိုင် ($ file)); : ဤကုဒ်နံပါတ်သည်ဖိုင်၏ download ကိုမှန်ကန်စွာကိုင်တွယ်ရန် browser ကိုကူညီသည်။
Readfile ($ file); ဖြေ - ဒီ function ကဖိုင်ကိုဖတ်ပြီး content ကို browser ထဲကိုပို့လိုက်တယ်။
တစ်ခါတစ်ရံကျွန်ုပ်တို့သည် filename ကို dynamally fixed string တစ်ခုမျှသာမဟုတ်ပါ။ ဤကိစ္စတွင် PHP variable များမှတဆင့်ဖိုင်အမည်ကိုသတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့်:
<?php
// ဖိုင်လမ်းကြောင်းကိုသတ်မှတ်ပါ
$file = 'path/to/your/file.txt';
// dynamicy ဖိုင်အမည်များကိုထုတ်ပေး
$fileName = 'downloaded_' . date('Y-m-d_H-i-s') . '.txt';
// ဖိုင်တည်ရှိသေချာအောင်လုပ်ပါ
if (file_exists($file)) {
// မှန်ကန်သောအကြောင်းအရာအမျိုးအစားကိုသတ်မှတ်ပါ
header('Content-Type: application/octet-stream');
// 动态တည်ဆောက်သည် Content-Disposition ဉီးခေါင်း
header('Content-Disposition: attachment; filename="' . $fileName . '"');
// တည်ဆောက်သည်文件大小
header('Content-Length: ' . filesize($file));
// ဖတ်ပြီး output ဖိုင်အကြောင်းအရာ
readfile($file);
exit;
} else {
echo "ဖိုင်မတည်ရှိပါဘူး!";
}
?>
ဤဥပမာတွင်ဖိုင်အမည်တွင်လက်ရှိနေ့စွဲနှင့်အချိန် (ဥပမာ - download လုပ်ထားသည့်အတိုင်း ဒေါင်းလုပ် လုပ်. download လုပ်သည်။ ) တွင်သင်ဒေါင်းလုပ်လုပ်တိုင်းဖိုင်အမည်သည်ကွဲပြားခြားနားလိမ့်မည်။
တခါတရံတွင်ကျွန်ုပ်တို့သည်ဆာဗာရှိ local files များသာမက URL မှတစ်ဆင့်ဖိုင်ဒေါင်းလုပ်များကိုပေးရန်လိုအပ်သည်။ အကြောင်းအရာ - စိတ်ထားကို သတ်မှတ်ရန်နှင့်ဝေးလံခေါင်သီသောဆာဗာမှဖိုင်အကြောင်းအရာကို download လုပ်ရန် header function ကိုသုံးနိုင်သည်။
<?php
// တည်ဆောက်သည်远程文件 URL
$url = 'https://m66.net/files/sample.txt';
// ဖိုင်အကြောင်းအရာကိုရယူပါ
$fileContent = file_get_contents($url);
// ဖိုင်အကြောင်းအရာအောင်မြင်စွာရရှိသောလျှင်
if ($fileContent !== false) {
// တည်ဆောက်သည်文件类型
header('Content-Type: application/octet-stream');
// တည်ဆောက်သည်文件下载名称
header('Content-Disposition: attachment; filename="sample_from_m66.txt"');
// တည်ဆောက်သည်文件大小
header('Content-Length: ' . strlen($fileContent));
// output ဖိုင်အကြောင်းအရာ
echo $fileContent;
exit;
} else {
echo "ဖိုင်ကို download မလုပ်နိုင်ပါ!";
}
?>
ဤဥပမာတွင် file ကို https://m66.net/files/samplet.txt မှဖိုင်ကို download လုပ်ပြီး download file ၏အမည်ကို header မှ sample_from_m66.txt သို့သတ်မှတ်ပါ။
မည်သည့် header ကို မပို့မီ HTML output မရှိပါ။ ဘာဖြစ်လို့လဲဆိုတော့ HTTP ခေါင်းစီးကိုမည်သည့်အကြောင်းအရာမဆိုထုတ်ဖော်ပြောဆိုခြင်းမပြုမီပို့ရမည်။
အကယ်. ဖိုင်သည်ကြီးမားပါကဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့တင်မည့်အစားဖိုင်အကြောင်းအရာများကို streaming လုပ်ခြင်းကိုစဉ်းစားပါ။
PHP ၏ header function မှတဆင့်ဖိုင်များ၏ download လုပ်သည့်အခါဖိုင်အမည်ကို setting အပါအ 0 င်ဖိုင်များ၏ download by belection ကိုအလွယ်တကူထိန်းချုပ်နိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဤလုပ်ဆောင်ချက်သည်အထူးသဖြင့်ဖိုင်စီမံခန့်ခွဲမှုစနစ်များနှင့်အစီရင်ခံစာမျိုးဆက်များကဲ့သို့သော application များဖြစ်သည်။