Apache Commons FileUpload API ব্যবহার করে ফাইল ম্যানেজমেন্ট

JSP এ ফাইল আপলোড এবং ডাউনলোড - জেএসপি (JSP) - Java Technologies

247

ফাইল আপলোড এবং ম্যানেজমেন্ট ওয়েব অ্যাপ্লিকেশনে একটি সাধারণ এবং গুরুত্বপূর্ণ কাজ। জেএসপি (JSP) এবং সার্ভলেট (Servlet) ব্যবহার করে ফাইল আপলোড করার জন্য Apache Commons FileUpload API একটি জনপ্রিয় এবং সহজ টুল। এটি সহজেই ফাইল আপলোড করতে সাহায্য করে এবং ফাইল ম্যানেজমেন্টের কাজগুলো সহজভাবে সম্পন্ন করা যায়।

Apache Commons FileUpload API কী?


Apache Commons FileUpload API একটি ওপেন সোর্স লাইব্রেরি যা ফাইল আপলোড এবং ম্যানেজমেন্টের কাজ সহজ করে। এটি ফাইল ডাটা প্রসেসিং করার জন্য সার্ভলেট কনটেইনারের multipart/form-data রিকোয়েস্ট হ্যান্ডেল করতে সক্ষম। এটি ফাইল সাইজ, ফাইল নাম, ফাইল এক্সটেনশন, ফাইল কনটেন্ট টাইপ ইত্যাদি তথ্য প্রক্রিয়া করতে সাহায্য করে।

ফাইল আপলোড করার জন্য পদক্ষেপ


১. Apache Commons FileUpload লাইব্রেরি যোগ করা

প্রথমে আপনাকে Apache Commons FileUpload এবং Apache Commons IO লাইব্রেরি আপনার প্রজেক্টে যোগ করতে হবে। আপনি Maven বা Gradle ব্যবহার করতে পারেন অথবা JAR ফাইল ডাউনলোড করে lib ফোল্ডারে রাখতে পারেন।

Maven dependency:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.5</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>

২. JSP পেজে ফাইল আপলোড ফর্ম তৈরি করা

একটি ফর্ম তৈরি করতে হবে যেখানে ইউজার ফাইল আপলোড করতে পারবে। ফর্মে enctype="multipart/form-data" এট্রিবিউট থাকতে হবে, যা ফাইল আপলোডের জন্য প্রয়োজনীয়।

<form action="upload" method="post" enctype="multipart/form-data">
    <label for="file">ফাইল নির্বাচন করুন:</label>
    <input type="file" name="file" id="file" />
    <input type="submit" value="আপলোড করুন" />
</form>

৩. ফাইল আপলোডের জন্য সাভলেট তৈরি করা

এখন আপনাকে একটি সাভলেট তৈরি করতে হবে যা ফাইল আপলোড করবে। এই সাভলেটটি Apache Commons FileUpload API ব্যবহার করবে। এখানে ফাইল আপলোড করার জন্য DiskFileItemFactory এবং ServletFileUpload ক্লাসগুলো ব্যবহার করা হবে।

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.io.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class FileUploadServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Create a factory to configure the file upload process
        DiskFileItemFactory factory = new DiskFileItemFactory();

        // Set the threshold size, beyond which files will be written to disk
        factory.setSizeThreshold(1024 * 1024); // 1MB

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);

        // Set the maximum size for uploaded files
        upload.setSizeMax(1024 * 1024 * 10); // 10MB max

        try {
            // Parse the request to get file items
            java.util.List<FileItem> items = upload.parseRequest(request);
            
            // Process the uploaded items
            for (FileItem item : items) {
                if (!item.isFormField()) {
                    // Extract file name
                    String fileName = item.getName();
                    
                    // Set the file path
                    String filePath = getServletContext().getRealPath("/") + "uploads" + File.separator + fileName;
                    
                    // Save the file to disk
                    File uploadedFile = new File(filePath);
                    item.write(uploadedFile);
                    
                    // Inform the user about the upload
                    response.getWriter().println("ফাইল সফলভাবে আপলোড হয়েছে: " + fileName);
                }
            }
        } catch (Exception e) {
            response.getWriter().println("ফাইল আপলোডে ত্রুটি: " + e.getMessage());
        }
    }
}

এখানে:

  • DiskFileItemFactory ফাইলটি ডিফল্টরূপে মেমরি এবং ডিস্কে সেভ করার জন্য ব্যবহার হয়।
  • ServletFileUpload ক্লাসটি ফাইলটি আপলোড করার জন্য ব্যবহৃত হয়।
  • getServletContext().getRealPath("/") ব্যবহার করে আপলোড করা ফাইলটি প্রকল্পের ডিরেক্টরিতে সংরক্ষিত হচ্ছে।

৪. আপলোড করা ফাইল সংরক্ষণ করা

আপলোড করা ফাইলটি সার্ভারের নির্দিষ্ট ফোল্ডারে সংরক্ষণ করা হবে। এখানে, uploads নামক একটি ফোল্ডার তৈরি করতে হবে যেখানে ফাইল সংরক্ষিত হবে।

ফোল্ডার তৈরি:

mkdir /path/to/your/webapp/uploads

৫. সার্ভলেট মেপিং

আপনার web.xml ফাইলে সাভলেটের জন্য মেপিং যুক্ত করতে হবে:

<servlet>
    <servlet-name>FileUploadServlet</servlet-name>
    <servlet-class>FileUploadServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>FileUploadServlet</servlet-name>
    <url-pattern>/upload</url-pattern>
</servlet-mapping>

৬. ফাইল ম্যানেজমেন্ট

একবার ফাইল আপলোড হয়ে গেলে, আপনি চাইলে আরও ফিচার যেমন ফাইলের আকার, প্রকার, মেটাডাটা চেক করতে পারেন। Apache Commons IO লাইব্রেরি ব্যবহার করে আপনি ফাইল ম্যানেজমেন্টের কাজগুলো যেমন ফাইলের তথ্য জানা, মুছে ফেলা বা স্থানান্তর করা খুব সহজে করতে পারেন।

import org.apache.commons.io.FileUtils;

File file = new File("/path/to/file");
long fileSize = file.length();

সারাংশ


Apache Commons FileUpload API ব্যবহার করে জেএসপি (JSP) এবং সার্ভলেট (Servlet) ব্যবহার করে সহজেই ফাইল আপলোড এবং ম্যানেজমেন্ট করা যায়। এটি ফাইল ডেটা প্রসেসিং, সাইজ চেক, ফাইল আপলোডের অবস্থান নির্ধারণ এবং অন্যান্য ফিচার প্রদান করে। এই API দিয়ে আপনি ফাইল আপলোড করা, ফাইলের তথ্য সংগ্রহ করা এবং সেই তথ্য ম্যানেজমেন্ট করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...