Spring MVC তে ফাইল আপলোডের জন্য, Spring এর MultipartFile ক্লাস ব্যবহার করা হয়। Spring MVC আপনাকে ফাইল আপলোড করতে সক্ষম করার জন্য খুবই সহজ এবং পরিষ্কার পদ্ধতি সরবরাহ করে।
ফাইল আপলোডের জন্য কিছু গুরুত্বপূর্ণ স্টেপ অনুসরণ করতে হবে:
multipartকনফিগারেশন যোগ করা- কন্ট্রোলার তৈরি করা
- View (HTML ফর্ম) তৈরি করা
এখানে Spring MVC তে ফাইল আপলোড কনফিগারেশন এবং উদাহরণ দেওয়া হলো।
১. multipart কনফিগারেশন যোগ করা
Spring Boot ব্যবহার করলে, Spring Boot স্বয়ংক্রিয়ভাবে multipart সাপোর্ট করে, তবে আপনি যদি Spring Framework ব্যবহার করেন, তবে web.xml বা application.properties ফাইলে কনফিগারেশন করতে হবে।
Spring Boot তে multipart কনফিগারেশন:
Spring Boot এর জন্য application.properties বা application.yml ফাইলে নিম্নলিখিত কনফিগারেশন যোগ করতে হয়:
application.properties:
# Enable Multipart file upload support
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=2MB
spring.servlet.multipart.max-request-size=2MB
এখানে:
max-file-size: সর্বোচ্চ ফাইল সাইজ (যেমন 2MB)।max-request-size: সর্বোচ্চ রিকোয়েস্ট সাইজ।
Spring Framework তে multipart কনফিগারেশন:
Spring Framework তে ফাইল আপলোডের জন্য multipart-config কনফিগারেশন করতে হবে web.xml বা Java-based কনফিগারেশন এর মাধ্যমে।
web.xml:
<web-app>
<multipart-config>
<max-file-size>2097152</max-file-size> <!-- 2MB -->
<max-request-size>4194304</max-request-size> <!-- 4MB -->
</multipart-config>
</web-app>
অথবা, Java-based কনফিগারেশন:
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
২. কন্ট্রোলার তৈরি করা
ফাইল আপলোডের জন্য Spring MVC কন্ট্রোলারে MultipartFile প্যারামিটার ব্যবহার করা হয়। এই প্যারামিটার ফর্ম থেকে ফাইলটি গ্রহণ করে এবং প্রক্রিয়া করার জন্য কন্ট্রোলার মেথডে পাঠানো হয়।
ফাইল আপলোড কন্ট্রোলার:
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.io.File;
import java.io.IOException;
@Controller
@RequestMapping("/upload")
public class FileUploadController {
// This method serves the upload page
@RequestMapping
public String uploadForm() {
return "uploadForm"; // The HTML view for uploading files
}
// Handling the file upload request
@PostMapping
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
if (file.isEmpty()) {
redirectAttributes.addFlashAttribute("message", "Please select a file to upload");
return "redirect:/upload";
}
try {
// Save the uploaded file to a local directory
File dest = new File("uploads/" + file.getOriginalFilename());
file.transferTo(dest);
redirectAttributes.addFlashAttribute("message", "You successfully uploaded " + file.getOriginalFilename());
} catch (IOException e) {
redirectAttributes.addFlashAttribute("message", "File upload failed: " + e.getMessage());
}
return "redirect:/upload";
}
}
ব্যাখ্যা:
@RequestParam("file") MultipartFile file: এখানেMultipartFileব্যবহার করা হয়েছে ফাইলটি গ্রহণ করতে, যা HTML ফর্ম থেকে পাঠানো হয়।file.transferTo(dest): এটি ফাইলটিকে সার্ভারে একটি নির্দিষ্ট ডিরেক্টরিতে সংরক্ষণ করে।
৩. View (HTML ফর্ম) তৈরি করা
এখন ফাইল আপলোডের জন্য HTML ফর্ম তৈরি করা প্রয়োজন যেখানে ইউজার ফাইল আপলোড করতে পারবে।
HTML ফর্ম (uploadForm.jsp বা Thymeleaf):
uploadForm.html (Thymeleaf example):
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Upload File</title>
</head>
<body>
<h2>Upload File</h2>
<form action="#" th:action="@{/upload}" method="post" enctype="multipart/form-data">
<label for="file">Choose file to upload:</label>
<input type="file" name="file" id="file" required="required" />
<button type="submit">Upload</button>
</form>
<div th:if="${message}" th:text="${message}"></div>
</body>
</html>
ব্যাখ্যা:
enctype="multipart/form-data": এটি নিশ্চিত করে যে ফর্মটি ফাইল আপলোডের জন্য প্রস্তুত।<input type="file">: এটি ফাইল আপলোড করার জন্য একটি ফাইল পিকারের ইনপুট ফিল্ড।
৪. ফাইল আপলোড সফল হওয়ার পর Feedback দেখানো
আপনি কন্ট্রোলার মেথডে RedirectAttributes ব্যবহার করতে পারেন যাতে ইউজারকে ফাইল আপলোডের সফলতা বা ত্রুটির বার্তা দেখানো যায়। এর জন্য, আমরা একটি ফ্ল্যাশ অ্যাট্রিবিউট ব্যবহার করেছি যাতে আপলোডের পর বার্তা দেখানো যায়।
ব্যাখ্যা:
redirectAttributes.addFlashAttribute("message", "message"): ফ্ল্যাশ অ্যাট্রিবিউটটি একটি রিডিরেক্টের মাধ্যমে অ্যাট্রিবিউট পাঠানোর জন্য ব্যবহৃত হয়, যা ভিউতে প্রদর্শিত হবে।
৫. ফাইল আপলোড প্রক্রিয়া
- ফাইলের সাইজ চেক করা: আপনি চাইলে ফাইলের সাইজ চেক করতে পারেন, যাতে অত্যধিক বড় ফাইল আপলোড করা না যায়।
- ফাইলের ধরন চেক করা: ফাইলের টাইপ (যেমন PDF, JPG) যাচাই করা যেতে পারে নিরাপত্তা এবং নির্দিষ্ট ধরনের ফাইল আপলোডের জন্য।
উপসংহার
Spring MVC তে ফাইল আপলোড কনফিগার এবং ব্যবহারের প্রক্রিয়া সহজ। Spring Boot বা Spring Framework উভয় ক্ষেত্রেই এটি সম্ভব। ফাইল আপলোডের জন্য MultipartFile ক্লাস ব্যবহার করা হয় এবং আপনি সহজেই ফাইলগুলি সার্ভারে সংরক্ষণ করতে পারেন।
- Spring Boot:
application.properties-এmultipartকনফিগারেশন - Spring Framework:
web.xmlবা Java-based কনফিগারেশন
ফাইল আপলোডের সময় ফাইল সাইজ চেক, ফাইল টাইপ যাচাই, এবং কাস্টম বার্তা প্রদর্শন এর মতো কাজগুলি সহজেই করা যায় Spring MVC তে।
Read more