MultipartResolver

All lectures for UZ purposes
Daraja, Dars
Mavjud

MultipartResolver bu org.springframework.web.multipart paketidan foydalanib, ko'p komponentli so'rovlarni, shu jumladan fayl yuklashni pars qilish strategiyasi hisoblanadi. Commons loyihasidan FileUploadga asoslangan birta qilingan va Servlet 3.0 ko'p komponentli so'rovlarini pars qilishga asoslangan boshqa qilingan.

Ko'p komponentli ishlov berishni faollashtirish uchun MultipartResolverni Springning DispatcherServlet konfiguratsiyasida multipartResolver nomi bilan deklaratsiya qilish kerak. DispatcherServlet uni topib, kiruvchi so'rovga tatbiq qiladi. Tarkibi multipart/form-data bo'lgan POST qabul qilingandan so'ng, tanib oluvchi tarkibini pars qiladi, joriy HttpServletRequestni MultipartHttpServletRequest sifatida o'rab, so'rov parametrlari sifatida komponentlarni ochishga qo'shimcha ravishda tanilgan fayllarga kirishni ta'minlaydi.

FileUpload Apache Commonsdan

Apache Commonsdan FileUploadni ishlatish uchun CommonsMultipartResolver turida binni multipartResolver nomi bilan konfiguratsiya qilish mumkin. Shuningdek, commons-fileupload jar-faylini classpathda dependency sifatida bo'lishi kerak.

Bu tanib oluvchi varianti ilova ichidagi mahalliy kutubxonaga vakolatlarni topshiradi, servlet konteynerlari orasida maksimal ko'p platformali ko'chuvchanlikni ta'minlaydi. Bundan tashqari, konteynerning o'z parseri yordamida standart ko'p komponentli servlet tanib olishdan foydalanish mumkin, quyida tavsiflanadi.

Commons FileUpload an'anaga ko'ra faqat POST-so'rovlarga tatbiq etiladi, lekin multipart/ tarkibining har qanday turini qabul qiladi. Tafsilotlar va konfiguratsiya parametrlarini CommonsMultipartResolver javadocda ko'ring.

Servlet 3.0

Servlet 3.0 spesifikatsiyasiga ko'p komponentli pars qilish servlet konteynerining konfiguratsiyasida faollashtirilishi zarur. Buning uchun:

  • Javada MultipartConfigElementni servletlar ro'yxatidan o'tkazishga o'rnating.

  • web.xmlda servletlar deklaratsiyasiga "<multipart-config>" bo'limini qo'shing.

Quyidagi misol MultipartConfigElementni servletlar ro'yxatidan o'tkazishni sozlashni ko'rsatadi:

Java
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    // ...
    @Override
    protected void customizeRegistration(ServletRegistration.Dynamic registration) {
        // Shuningdek, maxFileSize, maxRequestSize, fileSizeThresholdni o'rnatadi
        registration.setMultipartConfig(new MultipartConfigElement("/tmp"));
    }
}
Kotlin
class AppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {
    // ...
    override fun customizeRegistration(registration: ServletRegistration.Dynamic) {
        // Shuningdek, maxFileSize, maxRequestSize, fileSizeThresholdni o'rnatadi
        registration.setMultipartConfig(MultipartConfigElement("/tmp"))
    }
}

Servlet 3.0 konfiguratsiyasi yaratilgandan keyin, StandardServletMultipartResolver turida binni multipartResolver nomi bilan qo'shishingiz mumkin bo'ladi.

Bu tanib olish varianti sizning servlet konteyneringiz ko'p komponentli parseridan "hozirgi holat"da foydalanadi va ilovani konteyner ilovalari farqlariga ta'sir qilishi mumkin. Standart bo'lib, parser har qanday HTTP metodidan foydalangan holda har qanday multipart/ tarkibni pars qilishga harakat qiladi, lekin bu barcha servlet konteynerlar tomonidan qo'llab-quvvatlanmasligi mumkin. Tafsilotlar va konfiguratsiya parametrlarini StandardServletMultipartResolver javadocda ko'ring.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION