မျက်မှောက်ခေတ်ဝက်ဘ်ဆိုက်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဖိုင်တင်ခြင်းသည်အထူးသဖြင့်အပ်လုဗင်ထုတ်လုပ်မှုလုပ်ငန်းစဉ်အတွင်းအချိန်ကုန်များစသည့်စိန်ခေါ်မှုများစွာနှင့်မကြာခဏရင်ဆိုင်နေရသောစိန်ခေါ်မှုများစွာနှင့်ရင်ဆိုင်နေရသောကြီးမားသောဖိုင်များနှင့်ရင်ဆိုင်ရသောအခါအထူးလိုအပ်ချက်တစ်ခုဖြစ်သည်။ PHP သည် developer များဤပြ problems နာများကိုဖြေရှင်းရန်အတွက်ကိရိယာများစွာပေးသည်။ Array_chunk function သည်ကြီးမားသောဖိုင်များကိုသေးငယ်သောဖိုင်များခွဲရန်အသုံးပြုနိုင်ပြီး upload လုပ်ငန်းစဉ်ကိုပိုမိုကောင်းမွန်စေရန်နှင့်ကြီးမားသောဖိုင်များကိုတစ်ချိန်ကတင်ခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာအမျိုးမျိုးကိုရှောင်ရှားနိုင်သည်။
ဤဆောင်းပါးသည် array_chunk function ကို အသုံးပြု. ကြီးမားသောဖိုင်များကိုမည်သို့ထိထိရောက်ရောက်ခွဲခြားပြီး upload process ကိုပိုမိုကောင်းမွန်စေရန်ပြသရန်နမူနာကုဒ်ကိုအသုံးပြုလိမ့်မည်။
Array_chunk သည် PHP တွင် function တစ်ခုဖြစ်ပြီး stray တစ်ခုဖြစ်သော strays ကိုသေးငယ်သည့် array များသို့ခွဲထားသည်။ သေးငယ်တဲ့ခင်းကျင်းမှုတစ်ခုစီ၏အရွယ်အစားကိုသတ်မှတ်ထားသော parameters တွေကိုကဆုံးဖြတ်သည်။ ဤလုပ်ဆောင်မှုသည်များသောအားဖြင့်ကြီးမားသောအပိုင်းအစများအဖြစ်ခွဲထားရန်လိုအပ်သည့်အခြေအနေများတွင်အသုံးပြုသည်။
ကြီးမားသောဖိုင်များကိုတင်သည့်အခါ, သင်သည်များသောအားဖြင့်အောက်ပါပြ problems နာများကိုကြုံတွေ့ရလေ့ရှိသည်။
တင်ရန်အချိန်ကုန် ။ ကြီးမားသောဖိုင်များကိုတင်ခြင်းသည်အချိန်များစွာကြာနိုင်သည်။ အကယ်. ဆာဗာသည်အချိန်ကန့်သတ်ချက်ကိုတင်ပါက,
မှတ်ဉာဏ်ကန့်သတ်ချက်များ
Network မတည်ငြိမ်မှု - တင်စဉ်အတွင်းကွန်ယက်ချိတ်ဆက်မှုပြတ်တောက်မှုသည်ပျက်ကွက်မှုဖြစ်စေနိုင်သည်။
မှတ်ဥာဏ်သုံးစွဲမှုကိုဖယ်ရှားရန်နှင့်ကြီးမားသောဖိုင်များကိုတစ်ချိန်တည်းတင်ခြင်းကြောင့်အချိန်ကုန်စေသောပြ problems နာများကိုတင်ရန်အတွက်ဖိုင်ကိုတင်ရန်အသေးအဖွဲအပိုင်းအစများသို့ခွဲရန် array_chunk function ကိုသုံးနိုင်သည်။ ၎င်းသည်ပိတ်ပင်တားဆီးမှုငယ်တစ်ခုစီကိုအသုတ်တွင်တင်ရန်ခွင့်ပြုထားပြီး upload လုပ်ငန်းစဉ်တည်ငြိမ်မှုကိုတိုးတက်စေပြီးဆာဗာ၏မှတ်ဉာဏ်ဖိအားကိုလျှော့ချရန်ခွင့်ပြုသည်။
တင်ထားသောဖိုင်ကိုဖတ်ပါ။
ဖိုင်အကြောင်းအရာကိုသေးငယ်သောအပိုင်းပိုင်းခွဲပါ။
အပိုင်းအစတစ်ခုစီကိုတစ်ခုဖြင့်တင်ပါ။
သေးငယ်တဲ့အပိုင်းအစတစ်ခုတင်ပြီးနောက် client ကိုနှင့်ဆာဗာသည်လိုအပ်သောအတည်ပြုချက်အချက်အလက်များကိုဖလှယ်နိုင်သည်။
ကျွန်ုပ်တို့တွင်တင်ရန်လိုအပ်သည့်ဖိုင်ကြီးတစ်ခုရှိသည်ဆိုပါစို့။ PHP code မှတဆင့်ဖိုင်ငယ်များကိုအပိုင်းပိုင်း ခွဲ. server တစ်ခုစီကို server တစ်ခုစီသို့တင်နိုင်သည်ဆိုပါစို့။ ဒီနေရာမှာအခြေခံကုဒ်ဥပမာတစ်ခုပါ။
<?php
// ဖိုင်ပြုပြင်ခြင်းကုဒ်တင်ပါ
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$fileTmpPath = $_FILES['file']['tmp_name'];
$chunkSize = 1024 * 1024; // တစ်ခုချင်းစီကိုအပိုင်းအစ၏အရွယ်အစား,1MB
// ဖိုင်အကြောင်းအရာကိုဖတ်ပါ
$fileContent = file_get_contents($fileTmpPath);
$fileChunks = array_chunk(str_split($fileContent, $chunkSize), $chunkSize);
// တစ်ခုချင်းစီကိုအပိုင်းအစတစ်ခုစီတင်ပါ
foreach ($fileChunks as $index => $chunk) {
$uploadUrl = 'http://m66.net/upload_chunk.php'; // ပစ်မှတ်တင်ပါ URL
$postData = [
'chunk' => base64_encode(implode('', $chunk)), // ဖိုင်၏သေးငယ်တဲ့အပိုင်းပိုင်းကို encode လုပ်ပြီး upload လုပ်ပါ
'index' => $index,
'totalChunks' => count($fileChunks),
];
// အသုံးပြု cURL တစ်ခုချင်းစီကိုအတုံး upload
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uploadUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
}
echo 'အောင်မြင်စွာဖိုင်တင်ပါ!';
}
?>
<!-- ပုံစံတင်ခြင်း -->
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">ဖိုင်တင်ပါ</button>
</form>
ဖိုင်ဖတ်ခြင်းနှင့်ခွဲခြင်း - ဖိုင်အမျိုးအစားများဖြင့်တင်ထားသောဖိုင်အိတ်ကိုဖတ်ပါ။ ထို့နောက် file_get_contentents မှတဆင့်တင်ထားသောဖိုင်အကြောင်းအရာကိုဖတ်ပါ ။
ဒေတာ encoding : ဖိုင်အိတ်အကြောင်းအရာကို HTTP ပို့စ်မှတစ်ဆင့်လုံခြုံစွာတင်ပို့နိုင်ရန်အတွက်ဒေတာ base64_encode () တစ်ခုစီကိုကျွန်ုပ်တို့ encode လုပ်ပါ။
တင်ရန်တောင်းဆိုချက် - POST တောင်းဆိုမှုကိုပို့ရန်နှင့်ဆာဗာသို့ဖိုင်တစ်ခုစီကိုတင်ရန် curl ကို သုံးပါ။ $ Uploadurl ရှိ URL ကို http://m66.net/upload_chunk.php ဖြင့်အစားထိုးထားသော server-side script ကိုအသုံးပြုသည်။
ဆာဗာဘေးထွက် Upload_chunk.php code သည် file တစ်ခုချင်းစီကိုရိုက်ကူးပြီး၎င်းတို့ကိုပြည့်စုံသောဖိုင်တစ်ခုထဲသို့ထည့်သွင်းသင့်သည်။ ဤတွင်ရိုးရှင်းသောပေါင်းစည်းကုဒ်ဥပမာတစ်ခုရှိသည်။
<?php
// တင်ထားသောဖိုင်လုပ်ကွက်များကိုလက်ခံရရှိသည်
if (isset($_POST['chunk']) && isset($_POST['index']) && isset($_POST['totalChunks'])) {
$chunkData = base64_decode($_POST['chunk']);
$index = $_POST['index'];
$totalChunks = $_POST['totalChunks'];
// ဖိုင်များကိုသိမ်းဆည်းရန်ယာယီလမ်းညွှန်
$uploadDir = 'uploads/';
$filePath = $uploadDir . 'uploaded_file.tmp';
// ဖိုင်လုပ်ကွက်ဖြည့်ပါ
file_put_contents($filePath, $chunkData, FILE_APPEND);
// အားလုံးလုပ်ကွက် uploaded နေကြသည်ဆိုပါက,ယာယီဖိုင်များကိုနောက်ဆုံးဖိုင်များမှအမည်ပြောင်းနိုင်သည်
if ($index == $totalChunks - 1) {
rename($filePath, $uploadDir . 'final_uploaded_file.ext');
echo 'ဖိုင်တင်ခြင်းပြီးစီးခဲ့သည်!';
}
}
?>
array_chunk function ကိုပေါင်းစပ်ခြင်းနှင့်တင်ထားသော chunking ၏မဟာဗျူဟာကိုပေါင်းစပ်ခြင်းအားဖြင့်ကြီးမားသောဖိုင်များတင်ခြင်းကိုထိရောက်စွာကိုင်တွယ်နိုင်သည်။ ဤနည်းလမ်းသည်ဖိုင်တင်ခြင်းတည်ငြိမ်မှုကိုတိုးတက်စေရုံသာမကကွန်ရက်မတည်ငြိမ်သောအခါ upload process ကိုဆက်လက်ထိန်းသိမ်းရန်သေချာစေသည်။ ထို့အပြင်ပိတ်ဆို့မှုတင်ခြင်းကို အသုံးပြု. အသုံးပြုသူများသည် upload လုပ်ငန်းစဉ်အတွင်းမည်သည့်အချိန်တွင်မဆို upload များကိုခေတ္တရပ်တန့်ပြီးပြန်လည်စတင်နိုင်သည်။