IlmHamroh
JavaScript Full-stack/1-qism. Kompyuter, fayllar va terminal32/40-dars15 daqiqa
Mundarija (27)

Matnli va binar fayllar: kengaytma, sehrli raqam va MIME turi

Qisqacha: Har qanday fayl — baytlar ketma-ketligi. Baytlari harflarni bildirsa (masalan, UTF-8 da) — bu matnli fayl, uni istalgan muharrir ochadi. Qolganlari — binar fayllar: rasm, video, arxiv, dastur; ularni faqat maxsus dastur tushunadi. Kengaytma (.png, .txt) — nomning bir qismi, xolos. Faylning haqiqiy turini uning birinchi baytlari — "sehrli raqam" — ko'rsatadi. Buni xxd va file buyruqlari bilan tekshirasiz.

Bu darsda

  • Matnli va binar fayl farqini tushuntira olasiz va har biriga misol keltirasiz.
  • Kengaytmani o'zgartirish faylni nega boshqa formatga aylantirmasligini bilasiz.
  • "Sehrli raqam" (magic number) nima ekanini va eng mashhur formatlarning imzolarini taniysiz.
  • xxd, Format-Hex va file bilan faylning ichini va haqiqiy turini tekshira olasiz.
  • MIME turi nima ekanini va u internetda nega kerakligini bilasiz.

Oldin bilishingiz kerak: O'n oltilik sanoq sistemasi, Matn kodlash: ASCII, Unicode va UTF-8, Fayl tizimi, Qator oxiri (CRLF/LF).

1. Nega bu kerak?

Ikki vaziyatni tasavvur qiling.

Birinchisi. Telegram'da noma'lum odam hisobot.pdf faylini yubordi. Ochsangiz — hujjat emas, dastur ishga tushadi. Aslida faylning to'liq nomi hisobot.pdf.exe edi. Windows esa kengaytmani yashirgan.

Ikkinchisi. Do'stingiz "rasmni .txt qilib yubor, Telegram siqib yubormasin" dedi. Siz rasm.png ni rasm.txt deb qayta nomladingiz. Do'stingiz faylni Bloknotda ochdi — ekranda tushunarsiz belgilar. Rasm matnga aylanmadi.

Ikkala holatda ham bitta haqiqat bor: fayl nomi faylning ichini o'zgartirmaydi. Dasturchi uchun bu juda muhim. Keyinchalik saytingizga foydalanuvchilar fayl yuklaydi. Kimdir zararli dasturni rasm.jpg deb nomlab yuborishi mumkin. Faylning haqiqiy turini tekshira bilish — himoyaning birinchi qadami.

2. Hamma fayl — baytlar

Ikkilik sanoq darsida bayt nima ekanini ko'rgan edik: 8 bitdan iborat, 0 dan 255 gacha son. Diskdagi har qanday fayl — rasm ham, musiqa ham, matn ham — shunday sonlar ketma-ketligi.

Farq baytlarda emas, ularni qanday o'qishda. Masalan, beshta bayt: 53 61 6C 6F 6D (o'n oltilik ko'rinishda — sanoq sistemasi darsidagi kabi).

  • Matn sifatida o'qilsa, UTF-8 jadvali bo'yicha: S, a, l, o, m — "Salom".
  • Rasm sifatida o'qilsa: beshta piksel rangining qiymatlari.
  • Protsessor buyrug'i sifatida o'qilsa: qandaydir mashina buyruqlari.

O'xshatish: nota daftari. Musiqachi undagi belgilarni ko'rib, kuyni chaladi. Musiqa bilmagan odam esa faqat chiziq va nuqtalarni ko'radi. Belgilar bir xil — ularni kim va qanday "o'qishi" farq qiladi.

Tekshirib ko'ring: 41 6C 69 baytlarini UTF-8 matn sifatida o'qing. (Ishora: ASCII jadvalida 41 — A, 6C — l, 69 — i.)

Javob

Ali. Har bayt bitta harf: 41 → A, 6C → l, 69 → i. Lotin harflari ASCII'da ham, UTF-8'da ham bir xil kodlanadi — har biri bitta bayt.

3. Matnli fayllar

Matnli fayl (text file) — barcha baytlari biror kodlash jadvalidagi belgilarni bildiradigan fayl. Bugun bu jadval deyarli doim UTF-8. Bunday faylda harflar, raqamlar, tinish belgilari, bo'sh joy, tab va qator oxiri belgilari bo'ladi.

Misollar: .txt, .html, .css, .js, .json, .csv, .md, .sh, .svg.

Matnli faylni istalgan oddiy matn muharriri ochadi va o'zgartira oladi: Bloknot (Notepad), VS Code, nano. Dasturchining deyarli barcha ishi — mana shunday fayllar bilan. Kod ham, sozlamalar ham matn.

3.1 Matnli fayl ichiga qaraymiz

Terminalda kichik fayl yaratamiz va uning baytlarini ko'ramiz. Buning uchun xxd buyrug'i bor — u Git Bash, Linux va macOS'da tayyor turadi:

bash
echo "Salom" > salom.txt
xxd salom.txt

Natija:

text
00000000: 5361 6c6f 6d0a                           Salom.

Bu qatorni uch qismga bo'lamiz:

  • 00000000: — siljish (offset), ya'ni shu qatordagi birinchi bayt fayl boshidan nechanchi o'rinda turibdi (o'n oltilik sanoqda). Bizda — 0, ya'ni eng boshi.
  • 5361 6c6f 6d0a — baytlarning o'zi, o'n oltilik ko'rinishda, qulaylik uchun ikkitadan guruhlangan: 53, 61, 6c, 6f, 6d, 0a.
  • Salom. — o'sha baytlar matn sifatida. Harf bo'lmagan bayt nuqta (.) bilan ko'rsatiladi.

Oxirgi 0a qayerdan chiqdi? Biz faqat 5 ta harf yozgan edik. echo qator oxiriga Enter belgisini — LF (0a) ni qo'shadi. Uni CRLF darsida ko'rgan edik. Demak, fayl 6 bayt.

Tekshirib ko'ring: Xuddi shu Salom so'zi Windows'da CRLF bilan saqlansa, xxd natijasining oxiri qanday bo'ladi va fayl necha bayt?

Javob

Oxiri 6d0d 0a bo'ladi: m harfidan keyin 0d (CR) va 0a (LF). Fayl 7 bayt. CRLF — ikki bayt, LF — bitta.

4. Binar fayllar

Binar fayl (binary file) — baytlari harf emas, boshqa narsani bildiradigan fayl: piksel ranglari, ovoz to'lqini, siqilgan ma'lumot yoki protsessor buyruqlari.

Misollar: rasmlar (.png, .jpg), audio va video (.mp3, .mp4), arxivlar (.zip), dasturlar (.exe), shriftlar, PDF, Word va Excel hujjatlari.

Binar faylni Bloknotda ochsangiz, muharrir har baytni harf deb ko'rsatishga urinadi. Natijada ekranda tushunarsiz belgilar chiqadi. Faylni to'g'ri "o'qiy" oladigan dastur kerak: rasm uchun rasm ko'ruvchi, arxiv uchun arxivator.

Xususiyat Matnli fayl Binar fayl
Baytlar nimani bildiradi Harf va belgilarni Formatga qarab: piksel, ovoz, buyruq
Qanday ochiladi Istalgan matn muharriri Formatiga mos maxsus dastur
Muharrirda ko'rinishi Toza matn Tushunarsiz belgilar
Misollar .txt, .html, .json .png, .zip, .exe

Ikki kutilmagan holat bor:

  • .docx — binar. Word hujjatida matn bor, lekin fayl ichi siqilgan arxiv. Bloknotda ochsangiz, harflar o'rniga tushunarsiz belgilar ko'rasiz.
  • .svg — matnli. Bu rasm, lekin u chiziq va shakllarning matnli ta'rifidan iborat. Uni muharrirda ochib o'qisa ham, o'zgartirsa ham bo'ladi. SVG ni rasm formatlari darsida ko'ramiz.

Demak, "bu rasm yoki bu matn" degan savol emas, balki baytlar nimani bildiradi degan savol muhim.

Maslahat: Dasturlar faylni matn yoki binar deb qanday ajratadi? Oddiy usullardan biri — 00 baytini qidirish. Matnli faylda bu bayt deyarli uchramaydi, binar fayllarda esa juda ko'p. Git (kod tarixini saqlaydigan dastur, kursda alohida o'rganamiz) faylning boshidagi taxminan 8000 baytda 00 topsa, uni binar deb hisoblaydi.

Tekshirib ko'ring: rasm.png ni Bloknotda ochib, hech narsani o'zgartirmasdan "Saqlash" bosdingiz. Rasm endi ochilmayapti. Nega?

Javob

Bloknot baytlarni matn deb o'qidi. Saqlashda esa ularni o'z qoidasi bo'yicha qayta yozdi: harf deb tushunmagan baytlarni almashtirdi, qator oxirlarini o'zgartirdi. Bir necha bayt o'zgarsa ham, rasm formati buziladi. Binar faylni hech qachon matn muharririda saqlamang.

5. Kengaytma — faqat nomning bir qismi

Kengaytma (extension) — fayl nomidagi oxirgi nuqtadan keyingi qism: .png, .txt, .exe. U faqat ishora, faylning ichi emas.

Windows kengaytmadan bitta maqsadda foydalanadi: faylni ikki marta bosganda qaysi dastur ochishini tanlash. .docx — Word, .mp3 — pleyer. Lekin faylni qayta nomlaganda uning ichidagi baytlar bittasi ham o'zgarmaydi.

  • musiqa.wav ni musiqa.mp3 deb nomlash uni MP3 ga aylantirmaydi. Buning uchun konvertatsiya kerak — baytlarni boshqa formatga qayta yozadigan dastur (masalan, ffmpeg, audio va video darsida ko'ramiz).
  • rasm.png ni rasm.txt deb nomlash uni matnga aylantirmaydi. Ichida baribir rasm baytlari.

5.1 Yashirin kengaytma tuzog'i

Windows standart holatda ma'lum kengaytmalarni yashiradi. Natijada hisobot.pdf.exe fayli Explorer'da hisobot.pdf bo'lib ko'rinadi. Bu — zararli dasturlarning eski va hali ham ishlaydigan hiylasi.

Kengaytmalarni doim ko'rinadigan qilib qo'ying. Windows 11 da: Explorer → View (Ko'rinish) → Show → File name extensions ni belgilang. Fayl tizimi darsida buni eslatgan edik — hali qilmagan bo'lsangiz, hozir qiling.

6. Sehrli raqam — faylning "pasporti"

Agar kengaytma ishonchli bo'lmasa, dastur faylning turini qanday biladi? Javob faylning ichida.

Ko'p formatlarda fayl doim bir xil baytlar bilan boshlanadi. Bu baytlar sehrli raqam (magic number) yoki fayl imzosi (file signature) deb ataladi. Masalan, har qanday PNG rasm aynan shu 8 bayt bilan boshlanadi: 89 50 4E 47 0D 0A 1A 0A.

O'xshatish: pasport. Siz o'zingizni "Ali" deb tanishtirishingiz mumkin, lekin pasportdagi ma'lumot boshqa narsa desa — pasportga ishonishadi. Kengaytma — og'zaki tanishtirish, sehrli raqam — pasport.

Format Birinchi baytlar (hex) Matn ko'rinishi
PNG 89 50 4E 47 0D 0A 1A 0A .PNG....
JPEG FF D8 FF —
GIF 47 49 46 38 GIF8
PDF 25 50 44 46 2D %PDF-
ZIP 50 4B 03 04 PK..
Windows dasturi (.exe) 4D 5A MZ
Linux dasturi (ELF) 7F 45 4C 46 .ELF

Qiziq faktlar:

  • PK — ZIP formatini yaratgan Phil Katz ismining bosh harflari. .docx, .xlsx va Android ilovalari (.apk) ham aslida ZIP. Shuning uchun ularning barchasi PK bilan boshlanadi.
  • MZ — Windows dastur formatini loyihalagan Mark Zbikowski ismidan.
  • Oddiy matnli faylda sehrli raqam yo'q — u to'g'ridan-to'g'ri matn bilan boshlanadi. Istisno — BOM: UTF-8 BOM'li fayl EF BB BF bilan boshlanadi.

Tekshirib ko'ring: Fayl nomi hisobot.docx, birinchi baytlari 50 4B 03 04. Bu shubhali holatmi?

Javob

Yo'q, bu normal. .docx aslida ZIP arxiv, ZIP esa aynan 50 4B 03 04 (PK..) bilan boshlanadi. Agar hisobot.docx 4D 5A (MZ) bilan boshlansa — mana shunisi xavfli: bu Windows dasturi.

7. Baytlarni o'z ko'zingiz bilan ko'rish

Faylning baytlarini ko'rsatadigan dastur hex ko'ruvchi (hex viewer) deyiladi. "Hex" — o'n oltilik sanoq degani: baytlar shu ko'rinishda chiqariladi.

7.1 xxd (Git Bash, Linux, macOS)

-l (length — uzunlik) flagi nechta baytni ko'rsatishni aytadi:

bash
xxd -l 16 rasm.png

Natija:

text
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR

Birinchi 8 bayt — PNG imzosi: 89 50 4e 47 0d 0a 1a 0a. O'ng tomonda PNG harflari ham ko'rinib turibdi. IHDR — PNG ichidagi birinchi bo'lak nomi, unda rasm o'lchamlari yozilgan.

7.2 Format-Hex (PowerShell)

PowerShell'da xuddi shu ishni Format-Hex qiladi. Butun faylni emas, faqat birinchi qatorni olish uchun natijani Select-Object -First 1 ga uzatamiz:

powershell
Format-Hex rasm.png | Select-Object -First 1

Natija (PowerShell 5.1):

text
           Path: C:\Users\Ali\rasm.png

           00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000   89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52  PNG........IHDR

Ko'rinishi biroz boshqacha, lekin baytlar bir xil. Path: — qaysi fayl ko'rsatilayotgani. 00 01 ... 0F — ustun raqamlari: har bayt qatorning nechanchi o'rnida turganini ko'rsatadi. PowerShell 7 da jadval ko'rinishi biroz boshqacha, lekin ma'nosi o'sha.

7.3 VS Code'da

Grafik usulni afzal ko'rsangiz, VS Code uchun Microsoft'ning Hex Editor kengaytmasi bor. U faylni xuddi shunday jadval ko'rinishida ochadi. Kengaytmalarni kursda VS Code darslarida o'rganamiz.

8. file buyrug'i — turni o'zi aniqlaydi

Imzolarni yodlab, baytlarni ko'z bilan solishtirish shart emas. file buyrug'i buni avtomatik qiladi. U kengaytmaga qaramaydi: birinchi baytlarni o'qib, minglab ma'lum imzolar bilan solishtiradi. file Linux va macOS'da bor, Git Bash'da ham ishlaydi.

flowchart TD
    A["Fayl"] --> B["Birinchi baytlarni o'qish"]
    B --> C{"Ma'lum imzoga<br/>mos keldimi?"}
    C -- Ha --> D["Format nomi:<br/>PNG, PDF, ZIP..."]
    C -- Yo'q --> E{"Baytlar matnga<br/>o'xshaydimi?"}
    E -- Ha --> F["ASCII yoki UTF-8 text"]
    E -- Yo'q --> G["data — noma'lum binar"]

Tajriba qilamiz. Rasmning nusxasini .txt nomi bilan yaratamiz va file dan so'raymiz:

bash
cp rasm.png sirli_hujjat.txt
file sirli_hujjat.txt

Natija:

text
sirli_hujjat.txt: PNG image data, 800 x 600, 8-bit/color RGBA, non-interlaced

Nomida .txt bo'lsa ham, file bu PNG rasm ekanini aytdi. Hatto o'lchamini ham: 800 × 600 piksel.

Matnli fayllar uchun file kodlash va qator oxirini ham aytadi:

bash
file salom.txt
# salom.txt: ASCII text
file windows.txt
# windows.txt: ASCII text, with CRLF line terminators
file ozbekcha.txt
# ozbekcha.txt: Unicode text, UTF-8 text

Ikkinchi natija juda foydali: "with CRLF line terminators" — "qator oxiri CRLF". Skriptingiz serverda ^M xatosini bersa, file bilan bir soniyada tekshirasiz. Uchinchi natija: faylda ASCII'dan tashqari belgi bor (masalan, ʻ yoki kirill harfi), kodlash UTF-8.

9. MIME turi — internetdagi fayl yorlig'i

Internet orqali fayl yuborilganda kengaytmaga tayanilmaydi — manzilda kengaytma umuman bo'lmasligi mumkin. Buning o'rniga server har bir javobga MIME turi (MIME type) degan yorliq qo'shadi. Uni ba'zan "media turi" (media type) ham deyishadi.

MIME turi ikki qismdan iborat: tur/kichik_tur. Masalan, image/png — "rasm, PNG formatida".

MIME turi Odatiy kengaytma Nima
text/plain .txt Oddiy matn
text/html .html Veb-sahifa
text/css .css Sahifa ko'rinishi (stillar)
text/javascript .js JavaScript kodi
application/json .json JSON ma'lumot
image/png, image/jpeg .png, .jpg Rasmlar
application/pdf .pdf PDF hujjat
application/octet-stream istalgan Noma'lum binar ma'lumot

application/octet-stream — "shunchaki baytlar, turini bilmayman" degani. Brauzer bunday faylni ochishga urinmaydi, yuklab olishni taklif qiladi.

Maslahat: Eski kod va maqolalarda JavaScript uchun application/javascript ni uchratasiz. U ham ishlaydi, lekin 2022-yildan beri rasmiy tavsiya — text/javascript.

file buyrug'i MIME turini ham ayta oladi:

bash
file --mime-type sirli_hujjat.txt
# sirli_hujjat.txt: image/png

Server MIME turini Content-Type degan HTTP sarlavhasida yuboradi. HTTP sarlavhalarini 02-qismda batafsil o'rganamiz. Hozircha bitta haqiqiy misol. Server CSS faylini noto'g'ri tur bilan yuborsa, Chrome konsolida (brauzerning dasturchilar uchun oynasi, keyinroq o'rganamiz) shunday xato chiqadi:

text
Refused to apply style from 'https://example.com/style.css'
because its MIME type ('text/html') is not a supported
stylesheet MIME type, and strict MIME checking is enabled.

Tarjimasi: "style.css dagi stillar qo'llanmadi, chunki uning MIME turi text/html — bu stillar uchun yaroqli tur emas". Ko'pincha sababi oddiy: fayl yo'li noto'g'ri, server esa CSS o'rniga "sahifa topilmadi" degan HTML sahifani qaytargan.

Tekshirib ko'ring: Server hisobot.pdf faylini application/octet-stream turi bilan yubordi. Brauzer nima qiladi?

Javob

Faylni ochmaydi, yuklab olishni taklif qiladi. application/octet-stream — "noma'lum baytlar" degani, brauzer esa noma'lum narsani ko'rsatishga urinmaydi. Server application/pdf yuborganida, brauzer PDF'ni o'zida ochgan bo'lardi.

10. Hujumchi nigohi

Saytga fayl yuklash imkoniyati — hujumchilarning sevimli nishoni. Ular nimaga urinadi:

  1. Soxta kengaytma. Zararli skriptni avatar.jpg deb nomlab yuklaydi. Sayt faqat nomning oxirini tekshirsa, fayl qabul qilinadi.
  2. Soxta MIME turi. Brauzer yuborgan MIME turini hujumchi xohlagancha o'zgartira oladi: image/jpeg deb yozib, ichiga boshqa narsa soladi.
  3. Ikki kengaytma. hisobot.pdf.exe — foydalanuvchini aldash uchun.

Himoya — bu darsdagi bilim:

  • Kengaytmaga ham, yuborilgan MIME turiga ham ishonmang. Server faylning birinchi baytlarini o'qib, sehrli raqamni tekshirsin.
  • Faqat ruxsat etilgan turlarni qabul qiling (masalan, faqat PNG va JPEG).
  • Yuklangan faylga yangi, xavfsiz nom bering.

Fayl yuklashni to'liq fayl yuklash maydoni darsida va server qismida o'rganamiz.

11. Ko'p uchraydigan xatolar

11.1 Qayta nomlab, formatni o'zgartirdim deb o'ylash

video.mov ni video.mp4 qilib nomladingiz — telefoningiz baribir ochmayapti. Nom o'zgardi, ichi emas. Formatni o'zgartirish uchun konvertor kerak.

11.2 hisobot.txt.txt

Kengaytmalar yashirin bo'lganda faylga hisobot.txt deb nom berasiz. Windows esa o'zi yana .txt qo'shadi. Natijada fayl nomi hisobot.txt.txt, terminalda esa hisobot.txt topilmaydi:

text
cat: hisobot.txt: No such file or directory

Tarjimasi: "hisobot.txt degan fayl yoki papka yo'q". ls bilan haqiqiy nomni tekshiring va Explorer'da kengaytmalarni yoqing.

11.3 Binar faylni matn muharririda saqlash

Rasm yoki arxivni Bloknotda ochish — zararsiz. Lekin saqlash faylni buzadi. Tasodifan ochib qo'ysangiz, saqlamasdan yoping.

11.4 Binar faylni cat bilan chiqarish

cat rasm.png terminalni tushunarsiz belgilar bilan to'ldiradi. Ba'zan terminal "g'alati" holatga ham tushib qoladi. Bunday bo'lsa, reset buyrug'ini yozib, Enter bosing. Binar faylning ichiga qarash uchun xxd ishlating.

12. Mashqlar

1-mashq (oson): Baytlarni sanash

Terminalda bajaring:

bash
echo "Toshkent" > shahar.txt
xxd shahar.txt

Fayl necha bayt?

Yechim

Natija:

text
00000000: 546f 7368 6b65 6e74 0a                   Toshkent.

9 bayt: Toshkent so'zidagi 8 ta harf (har biri 1 bayt, chunki ular ASCII) va echo qo'shgan 0a (LF). Tekshirish uchun wc -c shahar.txt buyrug'i ham 9 shahar.txt deb chiqaradi — -c baytlarni sanaydi.

2-mashq (o'rta): Niqobni ochish

Kompyuteringizdagi istalgan PNG yoki JPEG rasmni oling (masalan, skrinshot). Uning nusxasini hujjat.txt nomi bilan yarating. Keyin:

  1. file bilan haqiqiy turini aniqlang.
  2. xxd -l 4 bilan birinchi 4 baytni ko'ring va jadvaldagi imzo bilan solishtiring.
Yechim
bash
cp skrinshot.png hujjat.txt
file hujjat.txt
xxd -l 4 hujjat.txt

file natijasi PNG image data, ... bo'ladi. xxd -l 4 natijasi:

text
00000000: 8950 4e47                                .PNG

Bu PNG imzosining boshi. JPEG rasmda esa file JPEG image data deydi, baytlar esa ffd8 ff bilan boshlanadi. Nom .txt bo'lishi hech narsani o'zgartirmadi.

3-mashq (qiyin): Qaysi biri xavfli?

Saytingizga uchta fayl yuklandi. Nomi va birinchi baytlari:

Fayl nomi Birinchi baytlar
pasport.jpg FF D8 FF E0
shartnoma.docx 50 4B 03 04
avatar.png 4D 5A 90 00

Har birining haqiqiy turini ayting. Qaysi fayl xavfli va nega?

Yechim
  • pasport.jpg — FF D8 FF — haqiqiy JPEG. Nom va ichi mos.
  • shartnoma.docx — 50 4B 03 04 (PK) — ZIP. .docx aslida ZIP arxiv bo'lgani uchun bu normal.
  • avatar.png — 4D 5A (MZ) — Windows dasturi! Rasm deb niqoblangan. Uni rad etish kerak.

Xulosa: faqat kengaytmani tekshirgan sayt uchala faylni ham qabul qilardi. Sehrli raqamni tekshirgan sayt esa uchinchisini to'xtatadi.

13. Real ishda

  • Fayl yuklash. Avatar, hujjat, rezyume yuklanadigan har bir saytda server faylning haqiqiy turini tekshiradi. Node.js'da buning uchun file-type kabi kutubxonalar bor (Node.js va kutubxonalarni kursda keyinroq o'rganamiz).
  • Sayt sozlash. Rasm yoki CSS noto'g'ri MIME turi bilan kelsa, brauzer uni ko'rsatmaydi. Birinchi tekshiriladigan narsa — Content-Type.
  • Xatoni topish. "Skript serverda ishlamayapti" — file skript.sh CRLF'ni bir soniyada ko'rsatadi.
  • Git. Git matnli fayllarning qatorma-qator farqini ko'rsatadi, binar fayllar uchun esa faqat "o'zgardi" deydi. Shuning uchun katta rasm va videolar kod bilan birga saqlanmaydi.
  • Intervyu. "Foydalanuvchi yuklagan fayl turini qanday tekshirasiz?" — "kengaytmaga emas, sehrli raqamga qarayman va ruxsat etilgan turlar ro'yxatini ishlataman".

Xulosa

  • Har qanday fayl — baytlar. Baytlar harflarni bildirsa — matnli, boshqa narsani bildirsa — binar fayl.
  • Kengaytma — nomning bir qismi; uni o'zgartirish faylning ichini o'zgartirmaydi.
  • Ko'p formatlar doim bir xil baytlar — sehrli raqam — bilan boshlanadi: PNG 89 50 4E 47, PDF %PDF, ZIP PK, EXE MZ.
  • xxd (yoki Format-Hex) baytlarni ko'rsatadi, file esa turni avtomatik aniqlaydi va CRLF'ni ham aytadi.
  • MIME turi (image/png, text/html) — internetda fayl turini bildiradigan yorliq.
  • Yuklangan faylning turini kengaytma va MIME'ga emas, ichidagi baytlarga qarab tekshiring.

Keyingi dars: JSON: dasturlar tili — dasturlar o'zaro ma'lumot almashadigan eng mashhur matnli format, uning qat'iy qoidalari va tuzoqlarini o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
Matnli va binar fayllar: kengaytma, sehrli raqam va MIME turi — IlmHamroh