Zip compressed files များကို manipulate လုပ်ရန် PHP ကိုအသုံးပြုသောအခါ zip_read () သည် compressed package တွင်နောက်ဖိုင်ကိုဖတ်ရန်ဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော်အချို့ developer တချို့ကအမှန်တကယ်လည်ပတ်မှုတွင် zip_read () သည် အမြဲတမ်း မှားယွင်းစွာ ပြန်ယူပြီးနောက်ဖိုင်ကိုမှန်ကန်စွာဖတ်ရန်ပျက်ကွက်ခြင်းအားဖြင့်တကယ့်ကိုအစဉ်အမြဲပြန်လည်ရရှိခဲ့သည်။ ဤပြ problem နာသည်ရှုထောင့်များစွာမှလာနိုင်သည်, ၎င်းကိုတစ် ဦး ချင်းစီခွဲခြမ်းစိတ်ဖြာကြပါစို့။
ပထမ ဦး စွာသင်သည် zip ဖိုင်ကိုမှန်ကန်သောနည်းလမ်းကိုဖွင့်ရန်သေချာအောင်ပြုလုပ်ရမည်။ စံစာဖတ်ခြင်းလုပ်ငန်းစဉ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
$zip = zip_open("archive.zip");
if (is_resource($zip)) {
while ($zip_entry = zip_read($zip)) {
echo "Name: " . zip_entry_name($zip_entry) . "\n";
}
zip_close($zip);
}
ဤနေရာတွင်ဤနေရာတွင် Zip_read ($ zip) သို့ခေါ်ဆိုမှုသည် Zip_open () သည် အရင်းအမြစ်ကိုပြန်လည်ရောက်ရှိပြီးနောက်ကွပ်မျက်ခံရရမည်။
developer များစွာသည် Zip_Entry_open () သည် လက်ရှိ 0 င်ရောက်မှုကိုဖွင့်ရန် Zip_entry_open () ဟုခေါ်ပြီးစာဖတ်ပြီးနောက် PHP သည် cursor ကိုအလိုအလျောက်လုပ်ဆောင်နိုင်ပြီးနောက်ဖိုင်ကိုအလိုအလျောက်လုပ်ဆောင်လိမ့်မည်။
တကယ်တော့ဒါကဒီလိုမဟုတ်ဘူး။ အလွန်များသောအားဖြင့်အမှားတစ်ခုမှာ
while ($entry = zip_read($zip)) {
if (zip_entry_open($zip, $entry, "r")) {
$data = zip_entry_read($entry);
zip_entry_close($entry);
}
}
အကယ်. သင်သည်ဒေတာ၏အစိတ်အပိုင်းတစ်ခုကိုသာဖတ်ပါကသို့မဟုတ်ဖတ်ရန်ပျက်ကွက်ပါကနောက်တစ်ကြိမ် Zip_read () ဟုသင်ခေါ်ဆိုသည့်အခါ, ဖိုင်၏အဆုံးကိုဖတ်ရန်သေချာပါစေသို့မဟုတ်နောက်တစ်ခုကိုဆက်မလုပ်မီ entry ကိုမှန်ကန်စွာပိတ်ပါ။
ပြ the နာသည် Zip file တွင်တည်ရှိသည်။ အချို့သော zip ဖိုင်များကိုပုံမှန်ဖွင့်လှစ်နိုင်သော်လည်းအချို့သော entries နာအချို့ကိုအကျင့်ပျက်ပြားခြင်းသို့မဟုတ်မမှန်သောအဆောက်အအုံများရှိနိုင်သည်။ ဥပမာအားဖြင့်:
ဖိုင်နာမည်တွင်အထူးအက္ခရာများပါရှိသည်
entry header သတင်းအချက်အလက်အကျင့်ပျက်ခြစားမှုဖြစ်ပါတယ်
အသစ်သောချုံ့ algorithms ကိုအသုံးပြုသည်။ PHP ၏ Zip Extension သည်မပံ့ပိုးပါ
Zip file ၏သမာဓိကိုကြည့်ရှုရန် Zipinfo သို့မဟုတ်အခြားကိရိယာများကိုအသုံးပြုရန်အကြံပြုသည်။ စစ်ဆေးရန် command line ကိုလည်းသုံးနိုင်သည်။
unzip -t archive.zip
ဤ command သည် entry တစ်ခုစီအတွက်စမ်းသပ်မှုရလဒ်များကိုဖော်ပြထားသည်။
Zip_read () သည် Zip extension (ယခင် libzip ဗားရှင်း) နှင့်သက်ဆိုင်သည်။ အကယ်. သင်သည် PHP 7.4 သို့မဟုတ်နောက်ပိုင်းတွင်အသုံးပြုနေပါက ZIP API ဟောင်းကိုကန့်ကွက်နိုင်သည်။ ယင်းအစား Ziparchive class ကိုအသုံးပြုရန်အတွက်၎င်းကိုပိုမိုတည်ငြိမ်။ ခေတ်သစ် interface ကိုထောက်ပံ့ပေးရန်အကြံပြုသည်။
$zip = new ZipArchive;
if ($zip->open('archive.zip') === TRUE) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$entry = $zip->getNameIndex($i);
echo "Entry: $entry\n";
}
$zip->close();
}
Zip_read () နှင့်နှိုင်းယှဉ်ပါက Ziparchive နှင့်နှိုင်းယှဉ်လျှင် ziparchive သည် အမှားအယွင်းများကိုဖြေရှင်းရန်ပိုမိုလွယ်ကူပြီးလျှို့ဝှက်ချက်များကိုကာကွယ်ခြင်း,
အကယ်. သင်သည် Zip ဖိုင်တစ်ခုစီကို Entry တစ်ခုစီကိုထုတ်ယူလိုပါက domain name ( M66.net ကဲ့သို့သော) နှင့်ချိတ်ဆက်ထားသောလမ်းကြောင်းကိုထုတ်လုပ်လိုပါကသင်လုပ်နိုင်သည်။
$zip = zip_open("archive.zip");
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
$name = zip_entry_name($entry);
echo "<a href='https://m66.net/files/" . urlencode($name) . "'>$name</a><br>";
}
zip_close($zip);
}
ကျေးဇူးပြု. သတိပြုပါ။ ကျွန်ုပ်တို့သည် link ကိုထုတ်လုပ်ပြီးဖိုင်ကိုဖြည်မနေကြောင်းသတိပြုပါ။ https://m66.net/files/xxx ကို ရယူရန်သင်သည် Zip ရှိအကြောင်းအရာများကိုဆာဗာပေါ်ရှိလမ်းညွှန်ရန်ညွှန်ကြားထားသည်။
Zip_read () ကို အသုံးပြုသည့်အခါနောက်လာမည့်ဖိုင် entry ကိုသင်မဖတ်နိုင်ပါက -
entry တစ်ခုစီကိုမှန်ကန်စွာဖတ်ပြီးပိတ်ထားကြောင်းစစ်ဆေးပါ။
PHP မှမထောက်ပံ့သော zip file ကိုအဂတိလိုက်စားမှုသို့မဟုတ်အင်္ဂါရပ်များမဟုတ်ကြောင်းအတည်ပြုပါ။
Zip function အဟောင်းကို Ziparchive နှင့်အစားထိုးရန်ကြိုးစားပါ။
အထူးသဖြင့်ကွင်းဆက်များကိုပြုပြင်သည့်အခါ,
zip_read () ရိုးရှင်းသောပုံရသည်, ၎င်းသည်အမှန်တကယ်အမှားများကိုအမှန်တကယ်ကျရောက်စေနိုင်သည်။ ၎င်း၏အခြေခံမူများနှင့်အခြားရွေးချယ်စရာများကိုနားလည်ခြင်းအားဖြင့်သာသင်သည်မှီဝဲခြင်းကိုရှောင်ရှားနိုင်ပြီးသင်၏ zip file processing logic ကိုပိုမိုခိုင်မာစေနိုင်သည်။