Struts 2 এ FileUploadInterceptor একটি বিশেষ ধরনের ইন্টারসেপ্টর যা ফাইল আপলোড করার কাজ সহজ করে। এটি HTTP রিকোয়েস্টে প্রাপ্ত ফাইলগুলো প্রসেস করার জন্য ব্যবহৃত হয় এবং সাধারণত ফর্মে ফাইল আপলোড করতে ব্যবহৃত হয়, যেমন প্রোফাইল ছবি আপলোড, ডকুমেন্ট আপলোড ইত্যাদি। Struts 2 তে FileUploadInterceptor ব্যবহার করে আপনি ফাইল আপলোড করার প্রক্রিয়াটি খুব সহজভাবে কনফিগার করতে পারেন।
FileUploadInterceptor কী?
FileUploadInterceptor Struts 2 এর একটি বিল্ট-ইন ইন্টারসেপ্টর যা ফাইল আপলোড প্রসেসিং পরিচালনা করে। এটি HTTP রিকোয়েস্টে ফাইল ইনপুট স্ট্রিম সংগ্রহ করে এবং ফাইলটিকে একটি নির্দিষ্ট জায়গায় সেভ করে দেয়। Struts 2 এ ফাইল আপলোড করতে কিছু প্রয়োজনীয় কনফিগারেশন এবং ক্লাস ব্যবহার করা হয়, যার মাধ্যমে আপনি ফাইলটি অ্যাকশন ক্লাসে অ্যাক্সেস করতে পারেন এবং সেই ফাইলটি প্রক্রিয়া করতে পারেন।
FileUploadInterceptor কনফিগারেশন
1. struts.xml ফাইলে FileUploadInterceptor কনফিগার করা
প্রথমে আপনাকে struts.xml ফাইলে FileUploadInterceptor কনফিগার করতে হবে। এটি মূলত ফাইল আপলোডের জন্য HTTP রিকোয়েস্টের মধ্যে file প্যারামিটার শনাক্ত করে।
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="uploadFile" class="com.example.FileUploadAction">
<interceptor-ref name="fileUpload"/>
<result name="success">/WEB-INF/content/uploadSuccess.jsp</result>
<result name="input">/WEB-INF/content/uploadForm.jsp</result>
</action>
</package>
<interceptors>
<interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/>
</interceptors>
</struts>
এখানে, uploadFile অ্যাকশনের জন্য FileUploadInterceptor ব্যবহার করা হয়েছে এবং ফাইল আপলোডের পরে uploadSuccess.jsp পেজে রিডিরেক্ট করা হবে।
2. Action Class তৈরি করা
আপনার অ্যাকশন ক্লাসে ফাইল আপলোডের জন্য কিছু ফিল্ড এবং মেথড তৈরি করতে হবে। ফাইলের নাম, টাইপ, সাইজ ইত্যাদি গ্রহণ করার জন্য Struts 2 এ File টাইপ ব্যবহার করা হয়।
import com.opensymphony.xwork2.ActionSupport;
import java.io.File;
public class FileUploadAction extends ActionSupport {
private File file;
private String fileContentType;
private String fileFileName;
// Getter and Setter for file, fileContentType, and fileFileName
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
// Execute method to handle file upload
public String execute() {
if (file != null) {
// ফাইল প্রসেসিং: ফাইলটিকে একটি নির্দিষ্ট ফোল্ডারে সেভ করা
System.out.println("File Name: " + fileFileName);
System.out.println("Content Type: " + fileContentType);
// এখানে ফাইল সেভ করার কোড লিখবেন
// উদাহরণস্বরূপ: FileUtils.copyFile(file, new File("/path/to/save/" + fileFileName));
return SUCCESS;
}
return INPUT;
}
}
এখানে, File file, String fileContentType, এবং String fileFileName ফিল্ডগুলি ব্যবহারকারী দ্বারা আপলোড করা ফাইলের ইনফরমেশন সংরক্ষণ করে। execute() মেথডে ফাইল প্রসেস করা হয় এবং সফলভাবে আপলোড হলে SUCCESS রিটার্ন করা হয়।
3. JSP ফর্ম তৈরি করা
ফাইল আপলোডের জন্য আপনাকে একটি ফর্ম তৈরি করতে হবে যেখানে ব্যবহারকারী ফাইল সিলেক্ট করে সাবমিট করতে পারবে। এটি Struts 2 ট্যাগ ব্যবহার করে করা হয়।
uploadForm.jsp
<html>
<body>
<h1>Upload File</h1>
<s:form action="uploadFile" enctype="multipart/form-data">
<s:file name="file" label="Choose a file" />
<s:submit value="Upload" />
</s:form>
</body>
</html>
এখানে, <s:file> ট্যাগ ব্যবহার করে ফাইল সিলেক্ট করার ফিচার প্রদান করা হয়েছে এবং enctype="multipart/form-data" অ্যাট্রিবিউটটি ফর্মের জন্য যুক্ত করা হয়েছে, যা ফাইল আপলোডের জন্য প্রয়োজন।
uploadSuccess.jsp
<html>
<body>
<h1>File uploaded successfully!</h1>
</body>
</html>
এটি একটি সিম্পল সাকসেস পেজ যেখানে ফাইল আপলোড সফল হলে বার্তা প্রদর্শিত হবে।
FileUploadInterceptor এর সুবিধা
- সহজ কনফিগারেশন: Struts 2 এর FileUploadInterceptor ফাইল আপলোডের জন্য অত্যন্ত সহজ কনফিগারেশন প্রদান করে।
- ফাইল তথ্য অ্যাক্সেস: আপনি সহজেই ফাইলের নাম, সাইজ, কন্টেন্ট টাইপ ইত্যাদি অ্যাক্সেস করতে পারবেন।
- মাল্টিপার্ট ফর্ম সাপোর্ট: Struts 2 ফাইল আপলোডের জন্য মাল্টিপার্ট ফর্ম ডেটা সাপোর্ট করে।
- ফাইল সেভিং: ফাইলটি সেভ করার জন্য সহজেই ফাইল সিস্টেমে একটি নির্দিষ্ট অবস্থান নির্ধারণ করা যায়।
উপসংহার
FileUploadInterceptor Struts 2 এর একটি অত্যন্ত শক্তিশালী এবং সহজ ব্যবহারযোগ্য ইন্টারসেপ্টর, যা ফাইল আপলোড করার কাজ সহজ করে তোলে। আপনি এই ইন্টারসেপ্টরটি ব্যবহার করে সহজে ব্যবহারকারী থেকে ফাইল গ্রহণ করতে পারবেন, এবং সেই ফাইলটি অ্যাকশন ক্লাসে প্রসেস বা সেভ করতে পারবেন। এটি একটি সিম্পল এবং কাস্টমাইজেবল উপায় ফাইল আপলোড ব্যবস্থাপনা করার জন্য।
Read more