Fayl, Blob və təhlükəsizlik modeli
Brauzer səhifəyə istifadəçinin diskinə giriş vermir. Fayl yalnız istifadəçi onu seçəndə (fayl seçimi pəncərəsi) və ya pəncərəyə sürüşdürəndə kodunuza File obyekti kimi çatır. Məzmun dərhal oxunmur: obyekt yalnız istinaddır.
Blobtipi (type) və ölçüsü (size) olan dəyişməz xam məlumatdır.FileBlob-un alt sinfidir,namevəlastModifiedəlavə edir.FileReaderməzmunu oxuyan hadisə əsaslı köhnə API-dir,file.text()kimi Promise metodları isə yeni yoldur.
💡 Node.js 20+ də
BlobvəFile-a malikdir, ona görə bir çox nümunəni brauzersiz də yoxlamaq olar.
input[type=file] və yoxlama
Fayl seçimi üçün input kifayətdir. multiple bir neçə fayla icazə verir, accept seçim pəncərəsini süzür.
<input type="file" id="file" accept="image/*,.pdf" multiple>Seçilən fayllar change hadisəsində input.files içindədir. Fərz edək ki, iki fayl seçilib:
const input = document.querySelector('#file');
input.addEventListener('change', () => {
const files = input.files;
for (const file of files) {
console.log(file.name, file.type, file.size);
}
});Əvvəl yoxlayın, sonra emal edin: tip və ölçü.
const MAX_SIZE = 2 * 1024 * 1024;
const ALLOWED = ['image/png', 'image/jpeg'];
function validate(file) {
if (!ALLOWED.includes(file.type)) return `type ${file.type} not allowed`;
if (file.size > MAX_SIZE) return 'file is too large';
return null;
}