7-modul · 4-dars: EL · MultipartFile
Daraja: Ilg'or
EL · MultipartFile. Jakarta EE bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi EL · MultipartFile tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Jakarta Expression Language viewdagi qiymat va oddiy ifodalarni Java kodini HTMLga aralashtirmasdan o'qishga xizmat qiladi. U request, session yoki boshqa scope attributelari, bean property va collection elementlari bilan ishlaydi. ELni biznes qoidasi yoki ishonchsiz foydalanuvchi bergan bajariladigan til sifatida ishlatmang. Fayl yuklash multipart/form-data formatida yuboriladi: body alohida qismlarga ajraladi. Servlet API jakarta.servlet.http.Partni, Spring MVC esa MultipartFile abstraksiyasini beradi; bu nomlar bitta APIga tegishli emas. Servletda @MultipartConfig yoki deployment descriptor bilan fileSizeThreshold, maxFileSize va maxRequestSize belgilanadi. Original filenamega ishonmang: path traversal, bir xil nomni bosish va serverda executable fayl saqlash xavfi bor. Server o'zi nom yaratsin, ruxsat etilgan tur/size tekshirilsin, fayl web-rootdan tashqarida saqlansin. MIME header client bergan da'vo, mustaqil tekshiruvning o'rnini bosmaydi.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/7-module%28Jakarta%20EE%29.md) [Rasmiy qo‘llanma](https://jakarta.ee/specifications/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
@jakarta.servlet.annotation.MultipartConfig(
maxFileSize = 2 * 1024 * 1024, maxRequestSize = 3 * 1024 * 1024)
// Servlet ichida:
// Part file = request.getPart("file");
// file.getInputStream() ni limitlangan xavfsiz storagega yozing.
Keng tarqalgan xatolar
- getSubmittedFileName() qiymatini disk yo'liga tekshirmasdan qo'shmang.
Mashqlar
- Katta fayl, bo'sh fayl va ../ bilan boshlangan nomga javob qanday bo'lishini test rejasida yozing.
- Fayl yuklovchi forma yozing va fayl nomini xavfsiz tozalab diskka saqlang.
Teglar: nazariya, modul-07, pdp