Failų įkėlimų didinimas naudojant dydžio apribojimus ir eigos indikatorius
Šiuolaikinės žiniatinklio programos turi turėti failų įkėlimo funkciją, todėl labai svarbu užtikrinti, kad naudotojo patirtis būtų sklandi. Failų dydžių ribojimas ir atsiliepimų teikimas realiuoju laiku, kol failas įkeliamas, yra du būdai pagerinti šią patirtį.
Šiame įraše bus aptarta, kaip naudoti „JavaScript“, kad failų įkėlimas būtų apribotas iki 2 MB. Siekdami pagerinti naudotojų dalyvavimą įkėlimo procese, taip pat parodysime, kaip įtraukti eigos juostą, kuri rodo įkėlimo eigą realiuoju laiku.
Labai svarbu kontroliuoti failo dydžio apribojimus, kad didžiuliai failai neperkrautų serverio talpos arba ilgai nedelstų įkėlimas. Kai vartotojas pasirenka didesnį nei leidžiama failą, įspėjamasis pranešimas gali jį įspėti, supaprastindamas procedūrą.
Taip pat aptarsime, kaip valdyti eigos juostos matomumą, kad ji būtų rodoma tik tada, kai vyksta įkėlimas. Tai padeda išlaikyti tvarkingą vartotojo sąsają tuščiosios eigos fazėse ir pagerina naudotojų vizualinę įvestį.
komandą | Naudojimo pavyzdys |
---|---|
XMLHttpRequest.upload | Susiedama įvykių klausytojus, tokius kaip eiga, ši komanda leidžia stebėti failų įkėlimo būseną. Tai būtina norint pateikti grįžtamąjį ryšį įkeliant failus ir padeda nustatyti įkeltos medžiagos dalį. |
FormData.append() | Naudojant šią funkciją, prie „FormData“ objekto galima pridėti rakto-reikšmių poras. Tai būtina norint tvarkyti failo duomenis, nes jie naudojami failo duomenims pridėti prieš pateikiant juos per užklausą įkeliant failus. |
progressContainer.style.display | Naudodama JavaScript, ši komanda tiesiogiai pakeičia elemento CSS ypatybę. Ji užtikrina, kad eigos juosta būtų rodoma tik tada, kai reikia, naudojant ją, kad būtų rodoma arba paslėpta juosta, atsižvelgiant į dabartinę failų įkėlimo būseną. |
e.lengthComputable | Šis parametras nustato, ar žinomas visas įkėlimo dydis. Labai svarbu užtikrinti teisingus eigos juostos atnaujinimus, nes ją galima apskaičiuoti tik tada, kai galima apskaičiuoti įkėlimo ilgį. |
xhr.upload.addEventListener('progress') | Naudojant šią komandą, įkėlimo eigos įvykių klausytojas pridedamas specialiai. Tai leidžia dinamiškai atnaujinti eigos juostą, kol failas įkeliamas, ir klausosi eigos atnaujinimų įkėlimo proceso metu. |
Math.round() | Naudojant šią funkciją, apskaičiuota įkelto failo dalis suapvalinama iki artimiausio sveikojo skaičiaus. Tai garantuoja, kad progreso juostoje bus rodomas aiškus, įskaitomas procentas (pvz., "50%, o ne "49,523%). |
xhr.onload | Kai failo įkėlimas baigtas, suaktyvinama ši įvykių tvarkyklė. Jis naudojamas tvarkyti serverio atsaką ir kontroliuoti įkėlimo pasekmes, įskaitant pranešimų apie sėkmę arba klaidų rodymą. |
alert() | Jei vartotojas pasirenka failą, kuris yra didesnis nei leidžiama, ši komanda atidaro iššokantįjį langą, kad praneštų apie tai. Tai suteikia vartotojui tiesioginį grįžtamąjį ryšį ir sustabdo failo įkėlimo procesą. |
„JavaScript“ failo įkėlimo dydžio apribojimų ir pažangos atsiliepimų supratimas
Pagrindinis pateikto „JavaScript“ kodo tikslas yra pateikti vartotojui grįžtamąjį ryšį realiuoju laiku per eigos juostą failo įkėlimo proceso metu ir apriboti įkeltų failų dydį iki 2 MB. Taip elgdamiesi vartotojai gali netyčia neįkelti didžiulių failų, kurie gali pabloginti serverio atsako laiką ir našumą. The failas.dydis nuosavybės sąlyginis failo dydžio patikrinimas yra pagrindinė komanda, naudojama siekiant sustabdyti, kad failai būtų didesni nei 2 MB. Įkėlimo procesas sustabdomas ir vartotojui pranešama scenarijaus, naudojant įspėjimas () metodas, jei failas yra per didelis.
Be to, scenarijus apvynioja failą į a FormData objektą, kad jis būtų paruoštas įkėlimui. Tai leidžia įprastu būdu pateikti failo duomenis naudojant POST užklausą. Tada faktinį failo įkėlimą tvarko objektas XMLHttpRequest. Šis objektas yra būtinas norint leisti įkelti AJAX stiliumi, nereikalaujant, kad vartotojas iš naujo įkeltų puslapį. XMLHttpRequest metodas open() nustato užklausą, o jo send() metodas pradeda įkėlimą. Kadangi vartotojas lieka tame pačiame puslapyje, tai garantuoja sklandžią patirtį.
Įkėlimo eigos rodymas yra viena iš pagrindinių scenarijaus funkcijų. The xhr.upload Objektas gali būti priverstas tai padaryti pridedant įvykių klausytoją, kuris stebi „progreso“ įvykius. Kai tik pateikiami duomenys, eigos matuoklis akimirksniu atnaujinamas. The e.ilgisApskaičiuojamas komanda garantuoja tikslų eigos apskaičiavimą, leidžiančią sistemai stebėti įkelto failo dydį ir rodyti jį eigos juostoje. Dėl tokio atsiliepimo įkėlimo procesas tampa matomas, o tai žymiai pagerina vartotojo patirtį.
Galiausiai, kai failo įkėlimas baigtas, įkėlimo funkcija yra būtina norint valdyti serverio atsakymą. Šią funkciją galima išplėsti, kad vartotojas būtų informuojamas apie rezultatą, o ne registruojant įkėlimo proceso sėkmę ar nesėkmę. Pavyzdžiui, jei nepavyksta įkelti failo, rodomas klaidos pranešimas arba sėkmės pranešimas. Be to, siekiant išvengti netvarkingos vartotojo sąsajos, kai nevyksta įkėlimas, eigos juosta rodoma tik tada, kai failas iš tikrųjų įkeliamas. Dėl šių savybių derinio bet kuri žiniatinklio programa gali pasinaudoti sklandžiu, saugiu ir efektyviu failų įkėlimo procesu.
Failų įkėlimo apribojimų ir eigos juostos įgyvendinimas
Šis scenarijus įkelia pažangos ataskaitas ir įgyvendina failo dydžio apribojimus naudodamas XMLHttpRequest ir gryną JavaScript. Taip pat garantuojamas našumo gerinimas ir tinkamas klaidų valdymas.
// HTML form for file upload
<form id="uploadForm">
<input type="file" id="fileInput" accept="image/*" required />
<div id="progressContainer" style="display: none;">
<progress id="uploadProgress" value="0" max="100"></progress>
<span id="progressText"></span>
</div>
<button type="submit">Upload</button>
</form>
// JavaScript for file upload handling
<script>
document.getElementById('uploadForm').addEventListener('submit', function(event) {
event.preventDefault(); // Prevent default form submission
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0]; // Get the selected file
const maxSize = 2 * 1024 * 1024; // Maximum file size: 2MB
if (file.size > maxSize) { // Check if file exceeds size limit
alert('File size exceeds 2 MB. Please select a smaller file.');
return; // Abort if the file is too large
}
const formData = new FormData(); // Prepare form data for upload
formData.append('file', file);
const progressContainer = document.getElementById('progressContainer');
const uploadProgress = document.getElementById('uploadProgress');
const progressText = document.getElementById('progressText');
progressContainer.style.display = 'block'; // Show progress bar
const xhr = new XMLHttpRequest(); // Create an XMLHttpRequest for upload
xhr.open('POST', '/upload', true);
xhr.upload.addEventListener('progress', function(e) {
if (e.lengthComputable) { // Update progress
const percentComplete = (e.loaded / e.total) * 100;
uploadProgress.value = percentComplete;
progressText.textContent = Math.round(percentComplete) + '% uploaded';
}
});
xhr.onload = function() { // Handle the response
if (xhr.status === 200) {
console.log('Upload complete:', JSON.parse(xhr.responseText));
} else {
console.error('Upload failed:', xhr.statusText);
}
};
xhr.send(formData); // Start file upload
});
</script>
Alternatyvus failų įkėlimo sprendimas naudojant Fetch API
Šis sprendimas užtikrina suderinamumą su dabartinėmis žiniatinklio technologijomis, įdiegdamas failų įkėlimo apribojimus ir teikdamas pažangos grįžtamąjį ryšį šiuolaikinėms naršyklėms per Fetch API.
// HTML remains the same
// JavaScript with Fetch API
<script>
document.getElementById('uploadForm').addEventListener('submit', async function(event) {
event.preventDefault();
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
const maxSize = 2 * 1024 * 1024;
if (file.size > maxSize) {
alert('File size exceeds 2 MB. Please select a smaller file.');
return;
}
const progressContainer = document.getElementById('progressContainer');
const uploadProgress = document.getElementById('uploadProgress');
const progressText = document.getElementById('progressText');
progressContainer.style.display = 'block';
const formData = new FormData();
formData.append('file', file);
// Use fetch for upload
const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
const percentComplete = (e.loaded / e.total) * 100;
uploadProgress.value = percentComplete;
progressText.textContent = Math.round(percentComplete) + '% uploaded';
}
};
xhr.send(formData);
});
</script>
Vartotojo patirties ir saugumo gerinimas įkeliant failus
Svarbus veiksnys, į kurį reikia atsižvelgti įkeliant failus, yra serverio saugumas ir sistemos vientisumas. Žmonės gali pateikti per didelius failus arba juose yra pavojingo turinio. Taigi, failo dydžio apribojimo nustatymas yra paprastas naudoti, bet galingas būdas sumažinti šiuos pavojus. Prieš pradedant įkėlimą, failo dydis patikrinamas pagal anksčiau pateiktą scenarijų. Nustatę 2 MB failo dydžio ribą, vartotojai gali išvengti jūsų sistemos perkrovimo didžiuliais failais, o tai gali sulėtinti serverius ir pralaidumą. Be to, patobulintos tiek serverio, tiek kliento pusės failų dydžio tikrinimo garantijos saugumo.
Vartotojo sąsaja yra dar vienas svarbus veiksnys. Įkeliant failus, gerai suprojektuota eigos juosta pagerina bendrą vartotojo patirtį. Naudotojas gali matyti, kaip vyksta jo įkėlimas, ir gauti įvertinimą, kiek užtruks, kol bus baigtas naudoti šį vaizdinį atsiliepimą. Sąsaja yra supaprastinta ir patogesnė, nes pažangos juosta rodoma tik tada, kai failas įkeliamas. Sistema nedelsdama praneša vartotojui, jei nepavyksta įkelti arba failas yra per didelis, o tai sumažina susierzinimą ir padidina klientų laimę.
Galiausiai, plečiamumas ir našumas failų įkėlimo procese yra svarbūs kūrėjai. Asinchroniniai veiksmai yra įmanomi dėl optimizuoto kodo, kuris garantuoja sklandžią failų įkėlimo procedūrą. Vienas iš pavyzdžių yra naudojimas XMLHttpRequest objektas. Taip išvengiama puslapio įkėlimų iš naujo, o tai pagerina programos reagavimą. Labai svarbu įdiegti serverio metodus, pvz., failų glaudinimą, patobulintą atminties valdymą ir duomenų bazės sąveikos optimizavimą, jei manote, kad daug vartotojų vienu metu įkels failus. Šie metodai padės efektyviai valdyti apkrovą.
Dažniausiai užduodami klausimai apie „JavaScript“ failų įkėlimą
- Kaip apriboti failo dydį „JavaScript“?
- Prieš pradėdami įkėlimo procesą, įsitikinkite, kad file.size atributas „JavaScript“ yra patikrintas, kad būtų nustatytas failo dydžio apribojimas. Tiesiog sustabdykite formos pateikimą, jei dydis viršija jūsų limitą.
- Ar galiu naudoti Fetch API failams įkelti?
- tikrai, fetch() gali būti naudojamas failams įkelti; tačiau sekti pažangą tampa sunkesnė. Reikėtų daugiau sprendimų nei 2.
- Kaip įkėlimo metu parodyti eigos juostą?
- Stebėdami xhr.upload.addEventListener('progress') įvykis, kuriame pateikiama informacija apie įkėlimo eigą, galite rodyti eigos juostą.
- Kodėl kliento pusės failo dydžio patvirtinimas yra svarbus?
- Vartotojai gauna greitą atsakymą per kliento pusės failo dydžio patvirtinimą, todėl išvengiama nereikalingų serverio užklausų dėl didelių failų. Bet už security, visada suporuokite jį su serverio patvirtinimu.
- Kas atsitiks, jei failo įkėlimas nepavyks?
- The onload arba onerror įvykis 2 Objektas gali būti naudojamas siekiant nustatyti įkėlimo klaidas ir atitinkamai įspėti vartotojus.
Failų įkėlimo proceso pabaiga
Norint užtikrinti sklandžią naudotojo patirtį, labai svarbu pateikti realiojo laiko pažangos indikaciją ir apriboti įkeliamų failų dydį. Tai garantuoja, kad vartotojai žinos apie savo įkėlimų būseną, ir neleidžia dideliems failams perkrauti sistemas.
„JavaScript“ gali būti naudojamas šioms strategijoms taikyti, o tai optimizuos kūrėjų saugumą ir našumą. Eigos juosta pagerina naudotojų įsitraukimą, o dydžio apribojimai apsaugo nuo tam tikrų pavojų. Šių rekomenduojamų praktikų naudojimas padeda sukurti efektyvias ir lengvai naudojamas žiniatinklio programas.
„JavaScript“ failų įkėlimo valdymo šaltiniai ir nuorodos
- Šiame šaltinyje išsamiai paaiškinama, kaip tvarkyti failų įkėlimą JavaScript naudojant 2 Objektas, skirtas kurti grįžtamąjį ryšį apie eigą ir tvarkyti failo dydžio apribojimus. Apsilankykite visame vadove adresu MDN žiniatinklio dokumentai .
- Norėdami gauti išsamų paaiškinimą apie formų ir failų įkėlimą naudojant „JavaScript“, šiame straipsnyje pateikiamas puikus kontekstas, daugiausia dėmesio skiriant šiuolaikinių žiniatinklio programų priekinės ir galinės sistemos sprendimams. Daugiau skaitykite adresu JavaScript.info .
- Šiame vadove aprašoma failo dydžio patvirtinimo svarba, naudotojų atsiliepimai ir geriausia praktika tvarkant failų įkėlimą žiniatinklio programose. Visą nuorodą žiūrėkite adresu W3Schools .