Multiple File Upload ব্যবস্থাপনা

JSF এর File Upload এবং Resource Management - জেএসএফ (JSF) - Web Development

220

JSF (JavaServer Faces) এর মাধ্যমে Multiple File Upload (একাধিক ফাইল আপলোড) ব্যবস্থাপনা একটি সাধারণ কাজ হতে পারে, তবে এর জন্য সঠিক কনফিগারেশন এবং লাইব্রেরি ব্যবহারের প্রয়োজন হয়। ফাইল আপলোড একটি সাধারণ প্রক্রিয়া, যেখানে ব্যবহারকারী এক বা একাধিক ফাইল সিলেক্ট করে সার্ভারে আপলোড করে। JSF 2.0 এর সাথে বিভিন্ন টেকনোলজি এবং লাইব্রেরি যেমন PrimeFaces বা Apache Commons FileUpload ব্যবহার করে একাধিক ফাইল আপলোড করা যায়।

Multiple File Upload ব্যবস্থাপনা


JSF এ একাধিক ফাইল আপলোডের জন্য কয়েকটি পদ্ধতি ব্যবহার করা যেতে পারে:

  1. PrimeFaces এর p:fileUpload কম্পোনেন্ট ব্যবহার
  2. JSF স্ট্যান্ডার্ড h:inputFile কম্পোনেন্ট ব্যবহার (কাস্টম হ্যান্ডলিং)

১. PrimeFaces এর মাধ্যমে Multiple File Upload


PrimeFaces একটি জনপ্রিয় JSF এক্সটেনশন লাইব্রেরি যা ফাইল আপলোডের জন্য অত্যন্ত শক্তিশালী কম্পোনেন্ট প্রদান করে। PrimeFaces এর p:fileUpload কম্পোনেন্টটি একাধিক ফাইল আপলোডের জন্য খুবই সুবিধাজনক। এটি AJAX সমর্থিত এবং ডাইনামিক আপলোড করতে সক্ষম।

PrimeFaces এর p:fileUpload কম্পোনেন্ট ব্যবহার করে Multiple File Upload

<h:form enctype="multipart/form-data">
    <p:fileUpload multiple="true" 
                  dragDropSupport="true" 
                  fileUploadListener="#{fileUploadBean.handleFileUpload}" 
                  update="messages" />
    <p:growl id="messages" showDetail="true" />
</h:form>

ব্যাখ্যা:

  • multiple="true": এটি ফাইল ইনপুট ফিল্ডে একাধিক ফাইল সিলেক্ট করার সুবিধা প্রদান করে।
  • dragDropSupport="true": এটি ড্র্যাগ এবং ড্রপ সমর্থন সক্ষম করে।
  • fileUploadListener="#{fileUploadBean.handleFileUpload}": এটি handleFileUpload মেথডকে কল করবে যখন ফাইল আপলোড করা হবে।
  • update="messages": ফাইল আপলোড সফল হলে, এটি একটি growl মেসেজ কম্পোনেন্ট আপডেট করবে।

PrimeFaces Managed Bean (Backend)

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.model.file.UploadedFile;
import java.io.IOException;
import java.util.List;

@ManagedBean
@SessionScoped
public class FileUploadBean {

    private List<UploadedFile> files;

    // Getter and Setter for files
    public List<UploadedFile> getFiles() {
        return files;
    }

    public void setFiles(List<UploadedFile> files) {
        this.files = files;
    }

    // File upload handler method
    public void handleFileUpload(UploadedFile uploadedFile) {
        try {
            // Logic for saving file to server
            System.out.println("File uploaded: " + uploadedFile.getFileName());
            // You can write the file to server here using uploadedFile.getInputStream()
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • handleFileUpload(UploadedFile uploadedFile): এই মেথডটি ফাইল আপলোডের পর কল করা হয়। এখানে আপনি সার্ভারে ফাইল সেভ করার জন্য প্রক্রিয়া নির্ধারণ করতে পারেন।
  • UploadedFile: এটি PrimeFaces এর ক্লাস যা আপলোড করা ফাইলের তথ্য ধারণ করে।

ফাইল সেভ করার উদাহরণ:

public void saveFile(UploadedFile file) throws IOException {
    String path = "C:/uploads/" + file.getFileName();
    try (InputStream input = file.getInputStream()) {
        Files.copy(input, Paths.get(path), StandardCopyOption.REPLACE_EXISTING);
    }
}

এই কোডটি ফাইলের ইনপুট স্ট্রিম নিয়ে সরাসরি সার্ভারে সেভ করবে।


২. JSF স্ট্যান্ডার্ড h:inputFile কম্পোনেন্ট ব্যবহার


JSF এর স্ট্যান্ডার্ড h:inputFile কম্পোনেন্ট ব্যবহার করে একাধিক ফাইল আপলোডের জন্য আপনাকে কাস্টম কনফিগারেশন করতে হবে। JSF নিজে থেকে একাধিক ফাইল আপলোড সমর্থন করে না, তবে আপনি h:inputFile কম্পোনেন্টের সাহায্যে ফাইল সিলেক্ট করতে পারেন এবং তারপর কাস্টম ফাইল আপলোড লজিক প্রয়োগ করতে পারেন।

Multiple File Upload হ্যান্ডলিং (Custom)

<h:form enctype="multipart/form-data">
    <h:inputFile value="#{fileUploadBean.file1}" />
    <h:inputFile value="#{fileUploadBean.file2}" />
    <h:commandButton value="Upload" action="#{fileUploadBean.uploadFiles}" />
</h:form>

Managed Bean:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.servlet.http.Part;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.IOException;

@ManagedBean
@SessionScoped
public class FileUploadBean {

    private Part file1;
    private Part file2;

    // Getter and Setter for file1 and file2
    public Part getFile1() {
        return file1;
    }

    public void setFile1(Part file1) {
        this.file1 = file1;
    }

    public Part getFile2() {
        return file2;
    }

    public void setFile2(Part file2) {
        this.file2 = file2;
    }

    public void uploadFiles() {
        try {
            saveFile(file1);
            saveFile(file2);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void saveFile(Part file) throws IOException {
        String fileName = file.getSubmittedFileName();
        try (InputStream input = file.getInputStream();
             FileOutputStream output = new FileOutputStream("C:/uploads/" + fileName)) {
            byte[] buffer = new byte[1024];
            int length;
            while ((length = input.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
        }
    }
}

এখানে, Part ক্লাসটি Servlet 3.0 দ্বারা সরবরাহিত, যা ফাইল আপলোড করার জন্য ব্যবহৃত হয়। getInputStream() মেথডের মাধ্যমে ফাইলের কন্টেন্ট পড়া হয় এবং সেভ করা হয়।


সারাংশ


JSF অ্যাপ্লিকেশনগুলিতে Multiple File Upload ব্যবস্থাপনা করতে আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন:

  1. PrimeFaces এর p:fileUpload কম্পোনেন্ট: এটি AJAX সমর্থিত এবং একাধিক ফাইল আপলোডের জন্য খুবই কার্যকরী।
  2. JSF স্ট্যান্ডার্ড h:inputFile কম্পোনেন্ট: কাস্টম লজিক প্রয়োগের মাধ্যমে একাধিক ফাইল আপলোড করতে পারবেন।

PrimeFaces আরও উন্নত ফিচার যেমন ড্র্যাগ এবং ড্রপ সমর্থন, ফাইলের প্রগ্রেস বারের সাথে আপলোড করার সুবিধা প্রদান করে, যা ব্যবহারকারীর জন্য আরও ইন্টারঅ্যাকটিভ ও উন্নত অভিজ্ঞতা তৈরি করে।

Content added By
Promotion

Are you sure to start over?

Loading...