$lang['tuto'] = "টিউটোরিয়াল"; ?> ছবি আপলোড করার সময়

ছবি আপলোড করার সময় স্প্রিং ফ্রেমওয়ার্কের মাল্টিপার্টফাইল ত্রুটি সমাধান করা

Temp mail SuperHeros
ছবি আপলোড করার সময় স্প্রিং ফ্রেমওয়ার্কের মাল্টিপার্টফাইল ত্রুটি সমাধান করা
ছবি আপলোড করার সময় স্প্রিং ফ্রেমওয়ার্কের মাল্টিপার্টফাইল ত্রুটি সমাধান করা

বসন্ত প্রকল্পে মাল্টিপার্টফাইল সমস্যাগুলি পরিচালনা করা

স্প্রিং ফ্রেমওয়ার্কের সাথে কাজ করার সময়, ফাইল আপলোড, বিশেষ করে ছবিগুলি পরিচালনা করার সময় বিকাশকারীরা প্রায়শই চ্যালেঞ্জের সম্মুখীন হন। ব্যবহার করে একটি ফটো আপলোড করার চেষ্টা করার সময় একটি সাধারণ সমস্যা দেখা দেয় মাল্টিপার্টফাইল বৈশিষ্ট্য, যা সঠিকভাবে বাস্তবায়িত না হলে ত্রুটি হতে পারে। এই ধরনের ফাইলগুলি কীভাবে পরিচালনা করবেন তা বোঝা একটি শক্তিশালী অ্যাপ্লিকেশন বিকাশের জন্য অপরিহার্য।

এই নিবন্ধে, আমরা একটি সমাধানের উপর ফোকাস করব MethodArgumentNotValidException সম্পর্কিত মাল্টিপার্টফাইল একটি বসন্ত ভিত্তিক প্রকল্পে। এই ত্রুটিটি সাধারণত ঘটে যখন ফ্রেমওয়ার্ক আপলোড করা ফাইলটিকে প্রত্যাশিত বিন্যাসে রূপান্তর করতে ব্যর্থ হয়, যা আপনার প্রকল্পের সঠিক কার্যকারিতাকে বাধাগ্রস্ত করতে পারে। মূল কারণ সনাক্ত করা এবং সঠিক সমাধান প্রয়োগ করা ফাইল পরিচালনার সমস্যাগুলিকে আপনার অ্যাপ্লিকেশনের কর্মপ্রবাহকে ব্যাহত করা থেকে বাধা দেবে।

প্রদত্ত পরিস্থিতিতে, একজন বিকাশকারী নিবন্ধকরণ প্রক্রিয়া চলাকালীন একটি ফটো যুক্ত করার চেষ্টা করছেন, কিন্তু একটি প্রকারের অমিল ত্রুটির সফল প্রক্রিয়াকরণে বাধা দেয় মাল্টিপার্টফাইল. আমরা কোড বাস্তবায়ন পর্যালোচনা করব এবং কার্যকরভাবে সমস্যাটির সমাধান করতে প্রয়োজনীয় পরিবর্তনগুলি অন্বেষণ করব৷ এই প্রক্রিয়াটি নিয়ামক এবং পরিষেবা স্তর উভয়ের সাথে সামঞ্জস্য করা জড়িত।

আপনি একজন শিক্ষানবিস বা একজন অভিজ্ঞ ডেভেলপার যার সাথে কাজ করছেন বসন্ত MVC এবং বসন্ত বুট, এই নির্দেশিকা আপনাকে এই ধরনের ত্রুটিগুলি কাটিয়ে উঠতে এবং স্প্রিং ফ্রেমওয়ার্কের মধ্যে ফাইল আপলোডগুলি সম্পর্কে আপনার বোঝার উন্নতি করতে সাহায্য করবে৷ আসুন ত্রুটির সুনির্দিষ্ট বিষয় এবং কীভাবে এটি মোকাবেলা করা যায় তা জেনে নেই।

আদেশ ব্যবহারের উদাহরণ
@RequestParam এই টীকাটি কন্ট্রোলার পদ্ধতিতে মাল্টিপার্টফাইল অবজেক্টের সাথে ওয়েব রিকোয়েস্ট প্যারামিটার (এই ক্ষেত্রে, আপলোড করা ফটো) আবদ্ধ করে। এটি বিশেষভাবে ফাইল আপলোড পরিচালনা করে।
MultipartFile.getBytes() একটি বাইট অ্যারে হিসাবে আপলোড করা ফাইলের বিষয়বস্তু পুনরুদ্ধার করে, যা পরে প্রক্রিয়া করা যেতে পারে, যেমন ফাইল সিস্টেমে সংরক্ষণ করা বা পরবর্তী ক্রিয়াকলাপের জন্য রূপান্তর করা।
Paths.get() ফাইল পাথ নির্ধারণ করতে ব্যবহৃত হয় যেখানে আপলোড করা ছবি সংরক্ষণ করা হবে। সার্ভারে ছবি সংরক্ষণ করার জন্য অবস্থান নির্দিষ্ট করার জন্য এই পদ্ধতিটি অপরিহার্য, যেমন "src/main/resources/static/img/guardados/"।
Files.write() এই কমান্ডটি ডিস্কের নির্দিষ্ট পাথে বাইট অ্যারে (আপলোড করা ফাইল থেকে) লেখে। এটি লক্ষ্য অবস্থানে ফাইল তৈরি বা ওভাররাইট করে।
Files.createDirectories() এটি প্রয়োজনীয় ডিরেক্টরি কাঠামো তৈরি করতে ব্যবহৃত হয় যদি এটি ইতিমধ্যে বিদ্যমান না থাকে। এটি নিশ্চিত করে যে ফাইল সংরক্ষণ করার চেষ্টা করার আগে ফোল্ডারগুলি ঠিক আছে, কোনো অনুপস্থিত ডিরেক্টরি ত্রুটি প্রতিরোধ করে।
BindingResult এই বস্তুটি স্প্রিং-এর MVC ফ্রেমওয়ার্কে বৈধতা এবং বাঁধাইয়ের ফলাফল ধারণ করে। এই প্রসঙ্গে, এটি মাল্টিপার্টফাইল অবজেক্টটি সঠিকভাবে প্রাপ্ত হয়েছে কিনা এবং আপলোড প্রক্রিয়াতে কোনো ত্রুটি আছে কিনা তা পরীক্ষা করে।
MockMultipartFile এই ক্লাস ফাইল আপলোড পরীক্ষা করার জন্য ব্যবহার করা হয়. এটি একটি ফাইলকে সিমুলেট করে যা পরীক্ষায় উত্তীর্ণ হতে পারে তা যাচাই করার জন্য সিস্টেমটি কীভাবে ফাইল আপলোডগুলিকে বাস্তবিক ফাইল ইন্টারঅ্যাকশনের প্রয়োজন ছাড়াই পরিচালনা করে।
@Valid @Valid টীকাটি নিশ্চিত করে যে ফাইল আপলোড যেকোন সীমাবদ্ধতার বিরুদ্ধে যাচাই করা হয়েছে, যেমন ফাইলের আকার, প্রকার বা প্রয়োজনীয় স্থিতি। এটি সমস্যা সনাক্ত করতে BindingResult এর সাথে একযোগে কাজ করে।
assertEquals() এটি পরীক্ষায় ব্যবহৃত একটি JUnit দাবী পদ্ধতি। ফাইল আপলোড এবং প্রক্রিয়াকরণের পরে প্রত্যাশিত মান (যেমন, ফাইলের নাম) প্রকৃত মানের সাথে মেলে কিনা তা পরীক্ষা করে।

বসন্ত প্রকল্পে মাল্টিপার্টফাইল হ্যান্ডলিং বোঝা

প্রদত্ত উদাহরণে, সমস্যাটি প্রাথমিকভাবে ব্যবহার করে ফাইল আপলোড পরিচালনার চারপাশে ঘোরে মাল্টিপার্টফাইল একটি স্প্রিং ফ্রেমওয়ার্ক অ্যাপ্লিকেশনে ইন্টারফেস। প্রধান সমস্যাটি ঘটে যখন ফ্রেমওয়ার্ক আপলোড করা ফাইলটিকে একটি ফাইল হিসাবে বিবেচনা করার পরিবর্তে একটি স্ট্রিং টাইপের সাথে আবদ্ধ করার চেষ্টা করে। এটি সমাধান করার জন্য, আমি ফাইল আপলোড পরিচালনা করার জন্য একাধিক সমাধান তৈরি করেছি, কোনো ত্রুটি বা অমিল ধরা পড়ে কিনা তা নিশ্চিত করার সময় ছবিটি সঠিকভাবে সংরক্ষণ করে। এখানে মূল পদ্ধতি হল ফাইল আপলোড ব্যবহার করে আবদ্ধ করা @RequestParam কন্ট্রোলারে এবং পরিষেবা স্তরের মধ্যে এটি সঠিকভাবে প্রক্রিয়া করুন। এইভাবে, আমরা ফটো আপলোড প্রক্রিয়া চলাকালীন একটি ধরনের অমিল এড়াতে পারি।

প্রথম সমাধানটি ফাইলটি খালি আছে কিনা তা পরীক্ষা করে এবং প্রয়োজনে একটি ত্রুটি বার্তা প্রদর্শন করে সরাসরি নিয়ামকটিতে ফাইল পরিচালনার বিষয়ে ঠিকানা দেয়। উপরন্তু, আমি প্রবর্তন MultipartFile.getBytes() পদ্ধতি, যা আমাদের একটি বাইট অ্যারে হিসাবে আপলোড করা ফাইলের বিষয়বস্তু পুনরুদ্ধার করতে এবং এটি ব্যবহার করে সার্ভারে লিখতে দেয় Files.write(). আমরা সঠিক ডিরেক্টরি কাঠামো ব্যবহার করে নিশ্চিত করা হয় Files.createDirectories(), ফোল্ডার তৈরি করা যদি এটি বিদ্যমান না থাকে। এই পদ্ধতিগুলি অনুপস্থিত ডিরেক্টরি বা অবৈধ ফাইল সামগ্রী সম্পর্কিত সমস্যাগুলি প্রতিরোধ করতে সাহায্য করে, যাতে ফাইল আপলোড সুচারুভাবে কাজ করে।

দ্বিতীয় সমাধানের জন্য, আমি পরিষেবা স্তরে বৈধতার একটি অতিরিক্ত স্তর যুক্ত করেছি। দ validateAndSaveImage পদ্ধতিটি ফাইলের ধরন পরীক্ষা করতে এবং সার্ভারে সংরক্ষণ করার আগে এটি একটি চিত্র কিনা তা নিশ্চিত করতে ব্যবহৃত হয়। এই পদ্ধতিটি খালি ফাইল বা অবৈধ ফাইলের ধরন পরীক্ষা করে এবং ব্যবহারকারী-বান্ধব ত্রুটি বার্তা ফেরত দিয়ে ত্রুটি-হ্যান্ডলিং পদ্ধতিকে উন্নত করে। এই পদ্ধতিটি আমাদের ফাইল আপলোডের সময় ঘটে যাওয়া সাধারণ সমস্যাগুলি পরিচালনা করতে দেয়, যেমন ব্যবহারকারীরা ভুল ফাইলের ধরন আপলোড করে বা কোনও ফাইল নির্বাচন না করে। সিস্টেমের দৃঢ়তা বজায় রেখে ব্যবহারকারীর অভিজ্ঞতা যাতে মসৃণ হয় তা নিশ্চিত করার উপর এখানে ফোকাস করা হয়।

তৃতীয় সমাধানে, আমি ব্যবহার করে স্প্রিং এর অন্তর্নির্মিত বৈধতা অন্তর্ভুক্ত করেছি @বৈধ টীকা, সঙ্গে মিলিত বাইন্ডিং রেজাল্টস্বয়ংক্রিয়ভাবে ইনকামিং ফাইল আপলোড যাচাই করতে। আপলোড করার সময় যদি কোনও ত্রুটি থাকে, যেমন একটি ফাইলের আকার সীমা বা একটি অবৈধ ফাইলের প্রকার, এটি ফ্রেমওয়ার্ক দ্বারা পতাকাঙ্কিত হয় এবং ব্যবহারকারীর কাছে একটি উপযুক্ত বার্তা ফেরত দেওয়া হয়। এই পদ্ধতিটি স্প্রিং-এর শক্তিশালী বৈধতা প্রক্রিয়াকে কাজে লাগায়, আমাদের লিখতে প্রয়োজন কাস্টম ত্রুটি-হ্যান্ডলিং কোডের পরিমাণ হ্রাস করে। এটি ফাইল আপলোডগুলিকে যাচাই করার একটি মানসম্মত উপায়ও নিশ্চিত করে, যা বিশেষত বড়, আরও জটিল অ্যাপ্লিকেশনগুলিতে কার্যকর।

সমাধান 1: বসন্তে মাল্টিপার্টফাইল হ্যান্ডলিং সংশোধন করা - কন্ট্রোলার লেভেল

এই সমাধানটি স্প্রিং এমভিসি ফ্রেমওয়ার্ক ব্যবহার করে, সরাসরি কন্ট্রোলারে মাল্টিপার্টফাইল টাইপ অমিল ত্রুটি ঠিক করার উপর ফোকাস করে এবং সঠিক বৈধতা যোগ করে।

@GetMapping("/registrarAdmin")
public String registrarAdmin(Model model) {
    model.addAttribute("admin", new AdministradorEntity());
    return "registrarAdmin";
}

@PostMapping("/registrarAdmin")
public String registroAdmin(@ModelAttribute("admin") AdministradorEntity adminFormulario,
                           Model model,
                           @RequestParam("fotoAdmin") MultipartFile foto) {
    if (foto.isEmpty()) {
        model.addAttribute("error", "Please upload a valid photo.");
        return "registrarAdmin";
    }
    adminService.crearAdmin(adminFormulario, foto);
    return "redirect:/adminList";
}

public static String guardarImagen(MultipartFile foto) {
    try {
        Path pathDire = Paths.get("src/main/resources/static/img/guardados/");
        if (!Files.exists(pathDire)) {
            Files.createDirectories(pathDire);
        }
        byte[] fotoBytes = foto.getBytes();
        Path pathImagen = Paths.get("src/main/resources/static/img/guardados/" + foto.getOriginalFilename());
        Files.write(pathImagen, fotoBytes);
        return foto.getOriginalFilename();
    } catch (IOException e) {
        System.out.println("Error uploading the photo: " + e.getMessage());
        return null;
    }
}

সমাধান 2: বৈধকরণ এবং পরিষেবা স্তর সহ মাল্টিপার্টফাইল হ্যান্ডলিং

এই পদ্ধতিটি একটি পরিষেবা স্তর এবং কাস্টম ফাইল টাইপ চেক ব্যবহার করে বৈধতা উন্নত করে, আরও ভাল ত্রুটি পরিচালনা এবং ফটো পরিচালনা নিশ্চিত করে।

@PostMapping("/registrarAdmin")
public String registroAdmin(@ModelAttribute("admin") AdministradorEntity adminFormulario,
                           Model model,
                           @RequestParam("fotoAdmin") MultipartFile foto) {
    String errorMessage = validateAndSaveImage(foto);
    if (errorMessage != null) {
        model.addAttribute("error", errorMessage);
        return "registrarAdmin";
    }
    adminService.crearAdmin(adminFormulario, foto);
    return "redirect:/adminList";
}

public String validateAndSaveImage(MultipartFile foto) {
    if (foto.isEmpty()) {
        return "Please upload a photo.";
    }
    if (!foto.getContentType().startsWith("image/")) {
        return "Invalid file type. Please upload an image.";
    }
    try {
        guardarImagen(foto);
    } catch (IOException e) {
        return "Error uploading the photo: " + e.getMessage();
    }
    return null;
}

public static String guardarImagen(MultipartFile foto) throws IOException {
    Path pathDire = Paths.get("src/main/resources/static/img/guardados/");
    if (!Files.exists(pathDire)) {
        Files.createDirectories(pathDire);
    }
    byte[] fotoBytes = foto.getBytes();
    Path pathImagen = Paths.get("src/main/resources/static/img/guardados/" + foto.getOriginalFilename());
    Files.write(pathImagen, fotoBytes);
    return foto.getOriginalFilename();
}

সমাধান 3: স্প্রিং ভ্যালিডেশন এবং ইউনিট টেস্টিং সহ মাল্টিপার্টফাইল পরিচালনা করা

এই পদ্ধতিটি স্প্রিং-এর অন্তর্নির্মিত টীকা ব্যবহার করে বৈধতা যোগ করে এবং বিভিন্ন পরিবেশে কার্যকারিতা নিশ্চিত করতে JUnit-এর সাথে প্রক্রিয়াটি পরীক্ষা করে।

@PostMapping("/registrarAdmin")
public String registroAdmin(@ModelAttribute("admin") AdministradorEntity adminFormulario,
                           Model model,
                           @RequestParam("fotoAdmin") @Valid MultipartFile foto,
                           BindingResult result) {
    if (result.hasErrors()) {
        model.addAttribute("error", "Photo upload failed. Please try again.");
        return "registrarAdmin";
    }
    adminService.crearAdmin(adminFormulario, foto);
    return "redirect:/adminList";
}

@Test
public void testCrearAdmin() {
    MultipartFile mockFile = new MockMultipartFile("fotoAdmin", "test.jpg", "image/jpeg", new byte[100]);
    AdministradorEntity admin = new AdministradorEntity();
    admin.setContrasenia("password123");
    admin.setFoto(mockFile.getOriginalFilename());

    String result = adminService.crearAdmin(admin, mockFile);
    assertNotNull(result);
    assertEquals("test.jpg", admin.getFoto());
}

বসন্তে সেরা অনুশীলনের সাথে মাল্টিপার্টফাইল ত্রুটিগুলি সমাধান করা

বসন্তে ফাইল আপলোডের সাথে কাজ করার সময়, মাল্টিপার্টফাইল ইন্টারফেস হল একটি শক্তিশালী টুল যা HTTP অনুরোধে ফাইল ডেটা পরিচালনা করার অনুমতি দেয়। যাইহোক, একটি সাধারণ সমস্যা ডেভেলপারদের সম্মুখীন হয় টাইপ অমিল ত্রুটি, বিশেষ করে যখন একটি ফাইল আপলোড একটি নন-ফাইল টাইপ, যেমন একটি স্ট্রিং এর সাথে আবদ্ধ করার চেষ্টা করে। এই ত্রুটিগুলি প্রায়শই নিয়ামক বা পরিষেবা স্তরগুলিতে ফাইলের ভুল পরিচালনার কারণে উদ্ভূত হয়, যেখানে ফাইলটি আলাদাভাবে সংরক্ষণ বা প্রক্রিয়া করা হবে বলে আশা করা হয়। স্প্রিং কীভাবে ফাইল আপলোডগুলি পরিচালনা করে তার একটি দৃঢ় উপলব্ধি এই ধরনের সমস্যাগুলি এড়াতে সাহায্য করতে পারে৷

বসন্তে ফাইলগুলি পরিচালনা করার সময় একটি গুরুত্বপূর্ণ বিবেচ্য বিষয় হল সঠিক বৈধতা নিশ্চিত করা। এর মধ্যে ফাইলটি খালি আছে কিনা বা এটি সঠিক ধরনের কিনা তা পরীক্ষা করা অন্তর্ভুক্ত। বসন্ত যেমন সরঞ্জাম প্রদান করে @বৈধ টীকা এবং বাইন্ডিং রেজাল্ট যেমন বৈধতা সঞ্চালন. এই টীকাগুলি সার্ভার দ্বারা প্রক্রিয়া করার আগে অবৈধ ফাইল বা অনুপস্থিত আপলোডগুলিকে পতাকাঙ্কিত করতে পারে৷ এই বৈশিষ্ট্যগুলি ব্যবহার করা শুধুমাত্র অ্যাপ্লিকেশনটির দৃঢ়তাকে উন্নত করে না কিন্তু কিছু ভুল হয়ে গেলে স্পষ্ট ত্রুটি বার্তা প্রদান করে ব্যবহারকারীর অভিজ্ঞতাও বাড়ায়।

উপরন্তু, ফাইল সংরক্ষণ করা হয় যেখানে অবস্থান সাবধানে পরিচালনা করা উচিত. ব্যবহার করে Files.createDirectories() একটি ফাইল সংরক্ষণ করার চেষ্টা করার আগে ফোল্ডার কাঠামো বিদ্যমান রয়েছে তা নিশ্চিত করে। এটি অনুপস্থিত ডিরেক্টরি সম্পর্কিত ত্রুটিগুলি প্রতিরোধ করতে সহায়তা করে। তাছাড়া, এই মত পদ্ধতির সাথে সমন্বয় Files.write() ভবিষ্যতে ব্যবহারের জন্য আপলোড করা ডেটা অ্যাক্সেস করা সহজ করে, দক্ষতার সাথে ফাইল সংরক্ষণ করতে সক্ষম করে। এই সর্বোত্তম অনুশীলনগুলি নিশ্চিত করে যে ফাইল আপলোডগুলি স্প্রিং-ভিত্তিক অ্যাপ্লিকেশনগুলিতে নিরাপদে এবং দক্ষতার সাথে পরিচালনা করা হয়।

বসন্তে মাল্টিপার্টফাইল সম্পর্কে সাধারণ প্রশ্ন

  1. কি MultipartFile বসন্তে ব্যবহৃত হয়?
  2. MultipartFile HTTP অনুরোধে ফাইল আপলোড পরিচালনার জন্য ব্যবহৃত হয়। এটি সার্ভার-সাইড লজিকে আপলোড করা ফাইলটিকে উপস্থাপন করে।
  3. আপনি কিভাবে একটি ফাইল আপলোড ব্যবহার করে সংরক্ষণ করবেন MultipartFile?
  4. আপনি ব্যবহার করতে পারেন getBytes() ফাইলের বাইট ডেটা পুনরুদ্ধার করতে এবং তারপর এটি ব্যবহার করে সংরক্ষণ করুন Files.write() এটি একটি নির্দিষ্ট পথে সংরক্ষণ করতে।
  5. তাহলে আমার কি করা উচিত MultipartFile একটি টাইপ অমিল ত্রুটি ফেরত?
  6. নিশ্চিত করুন যে আপনি ফাইলটিকে a এর সাথে আবদ্ধ করছেন MultipartFile কন্ট্রোলারে অবজেক্ট এবং স্ট্রিং এর মত অন্য ধরনের নয়, কারণ এটি অমিলের কারণ।
  7. আমি ব্যবহার করে ফাইল প্রকার যাচাই করতে পারি? MultipartFile?
  8. হ্যাঁ, আপনি ফাইলের ধরন যাচাই করে এর বিষয়বস্তুর প্রকার যাচাই করতে পারেন getContentType() এবং নিশ্চিত করুন যে এটি "image/jpeg" এর মত একটি গৃহীত বিন্যাস।
  9. আমি কিভাবে বসন্তে বড় ফাইল আপলোড পরিচালনা করব?
  10. আপনি আপনার ফাইল আকার সীমা কনফিগার করতে পারেন application.properties বা application.yml বৈশিষ্ট্য ব্যবহার করে spring.servlet.multipart.max-file-size এবং spring.servlet.multipart.max-request-size.

মাল্টিপার্টফাইল ত্রুটির উপর চূড়ান্ত চিন্তা

পরিচালনায় মাল্টিপার্টফাইল স্প্রিং অ্যাপ্লিকেশানগুলির মধ্যে, প্রক্রিয়ার প্রথম দিকে টাইপের অমিল এবং ফাইলের বৈধতা সংক্রান্ত সমস্যাগুলির সমাধান করা অপরিহার্য। ফাইল আপলোডগুলি সঠিকভাবে পরিচালনা করা অ্যাপ্লিকেশনটির নির্ভরযোগ্যতা উন্নত করে এবং সম্ভাব্য ত্রুটিগুলি হ্রাস করে৷

ফাইলের ধরন যাচাইকরণ, ডিরেক্টরির অস্তিত্ব নিশ্চিত করা এবং দক্ষ ফাইল হ্যান্ডলিং লজিক লেখার মতো সমাধানগুলি বাস্তবায়ন করে, আপনি ফটো আপলোডগুলিকে স্ট্রিমলাইন করতে পারেন। সর্বোত্তম অনুশীলনগুলি অনুসরণ করা আপনার অ্যাপ্লিকেশনটিকে দীর্ঘমেয়াদে আরও সুরক্ষিত এবং রক্ষণাবেক্ষণযোগ্য করে তুলবে।

স্প্রিং মাল্টিপার্টফাইল সলিউশনের জন্য রেফারেন্স এবং উত্স
  1. সম্পর্কে বিস্তারিত তথ্য মাল্টিপার্টফাইল স্প্রিং-এ ইন্টারফেস এবং হ্যান্ডলিং ফাইল আপলোডগুলি অফিসিয়াল স্প্রিং ডকুমেন্টেশনে পাওয়া যাবে: স্প্রিং মাল্টিপার্টফাইল ডকুমেন্টেশন
  2. এর সাথে ফাইল আপলোড পরিচালনার জন্য সাধারণ নির্দেশিকা এবং সর্বোত্তম অনুশীলনের জন্য বসন্ত MVC, এই নিবন্ধটি একটি রেফারেন্স হিসাবে ব্যবহার করা হয়েছিল: Baeldung - বসন্ত ফাইল আপলোড
  3. পরিচালনার জন্য অতিরিক্ত সমস্যা সমাধান MethodArgumentNotValidException এবং অন্যান্য সাধারণ বসন্ত ত্রুটিগুলি নিম্নলিখিত আলোচনা থেকে পাওয়া গেছে: স্ট্যাক ওভারফ্লো - MethodArgumentNotValidException