Vaadin-এ ফাইল ডাউনলোড করার জন্য সাধারণত Download Link এবং Download Stream ব্যবহার করা হয়। এই দুটি পদ্ধতি ব্যবহার করে আপনি ইউজারদের ফাইল ডাউনলোড করার সুযোগ দিতে পারেন। এখানে, আমরা দেখবো কিভাবে একটি ডাউনলোড লিঙ্ক এবং ডাউনলোড স্ট্রিম তৈরি করা যায়।
ফাইল ডাউনলোড লিঙ্ক তৈরি করা
Vaadin-এ একটি ডাউনলোড লিঙ্ক তৈরি করতে, Anchor কম্পোনেন্ট ব্যবহার করা হয়। Anchor কম্পোনেন্টে href অ্যাট্রিবিউট ব্যবহার করে ইউজারকে একটি ফাইল ডাউনলোড করতে দেওয়া হয়। যদি আপনি ফাইলটি ক্লায়েন্টের ব্রাউজার থেকে সরাসরি ডাউনলোড করতে চান, তবে আপনাকে ফাইলটির URL প্রদান করতে হবে।
1. ডাউনলোড লিঙ্ক তৈরি করা
Button downloadButton = new Button("Download File");
Anchor downloadLink = new Anchor("https://example.com/file.pdf", "Download PDF");
downloadLink.getElement().setAttribute("download", true); // Specify that it's a download link
downloadButton.addClickListener(e -> {
// Add any additional logic if needed
Notification.show("Download link is ready!");
});
add(downloadButton, downloadLink);
- এখানে,
Anchorকম্পোনেন্ট ব্যবহার করা হয়েছে একটি পিডিএফ ফাইল ডাউনলোড লিঙ্ক তৈরি করতে।downloadঅ্যাট্রিবিউটটি নির্ধারণ করে যে এটি একটি ডাউনলোড লিঙ্ক হবে, যা ইউজারকে ক্লিক করার পর ফাইলটি ডাউনলোড করবে।
2. ইন-অ্যাপ ফাইল ডাউনলোড লিঙ্ক
আপনি যদি ফাইলটি সার্ভার সাইড থেকে সরাসরি ডাউনলোড করতে চান, তাহলে এটি ব্যবহার করতে হবে:
Button downloadButton = new Button("Download Report");
downloadButton.addClickListener(event -> {
// Example: dynamically generated file content
String content = "This is a dynamically generated content.";
ByteArrayInputStream stream = new ByteArrayInputStream(content.getBytes());
// Create a download link for the file
StreamResource resource = new StreamResource("report.txt", () -> stream);
Anchor downloadLink = new Anchor(resource, "Download Report");
downloadLink.getElement().setAttribute("download", true);
add(downloadLink);
});
add(downloadButton);
- এখানে,
StreamResourceব্যবহার করা হয়েছে ডাইনামিকভাবে জেনারেট হওয়া ফাইলের জন্য একটি ডাউনলোড লিঙ্ক তৈরি করতে। ইউজারDownload Reportবাটনে ক্লিক করলেreport.txtনামক একটি ফাইল ডাউনলোড হবে।
ফাইল ডাউনলোড স্ট্রিম তৈরি করা
Download Stream ব্যবহৃত হয় যখন আপনাকে ফাইলের কনটেন্টকে স্ট্রিমের মাধ্যমে সরবরাহ করতে হয়। এখানে আপনি ফাইলের কনটেন্ট মেমরি থেকে স্ট্রিম করে ইউজারের ব্রাউজারে পাঠাতে পারবেন।
1. স্ট্রিম রিসোর্স তৈরি করা
Button downloadButton = new Button("Download Report");
downloadButton.addClickListener(event -> {
// Example: Generate file content dynamically
String content = "This is a dynamically generated content for the report.";
ByteArrayInputStream stream = new ByteArrayInputStream(content.getBytes());
// Create the stream resource
StreamResource resource = new StreamResource("dynamic_report.txt", () -> stream);
// Create an anchor with the stream resource
Anchor downloadLink = new Anchor(resource, "Download Dynamic Report");
downloadLink.getElement().setAttribute("download", true);
// Show the download link
add(downloadLink);
});
add(downloadButton);
- এখানে,
ByteArrayInputStreamব্যবহার করে স্ট্রিম ডেটা তৈরি করা হয়েছে। তারপর, সেই স্ট্রিম ডেটাকেStreamResourceদিয়ে সংযুক্ত করা হয়েছে। এই রিসোর্স একটি ডাউনলোড লিঙ্ক হিসেবে ইউজারের কাছে পৌঁছে যাবে।
2. ফাইল সার্ভার থেকে ডাউনলোড করা
এছাড়া, যদি আপনি সার্ভার থেকে একটি রিয়েল ফাইল ডাউনলোড করতে চান, তাহলে StreamResource ব্যবহার করে সেই ফাইলটিকে স্ট্রিম করা যেতে পারে:
Button downloadButton = new Button("Download File");
downloadButton.addClickListener(event -> {
// Assume you have a file in the resources folder
InputStream fileStream = getClass().getResourceAsStream("/files/sample_report.pdf");
// Create the stream resource for the file
StreamResource resource = new StreamResource("sample_report.pdf", () -> fileStream);
// Create the download link
Anchor downloadLink = new Anchor(resource, "Download PDF");
downloadLink.getElement().setAttribute("download", true);
// Show the download link
add(downloadLink);
});
add(downloadButton);
- এখানে,
getClass().getResourceAsStream("/files/sample_report.pdf")ব্যবহার করে সার্ভারের ফাইলকে স্ট্রিম করা হয়েছে এবং এটি একটিStreamResourceতৈরি করে ডাউনলোড লিঙ্কে আনা হয়েছে।
সারাংশ
Vaadin-এ ফাইল ডাউনলোড লিঙ্ক এবং ডাউনলোড স্ট্রিম তৈরি করা সহজ এবং কার্যকর। আপনি Anchor কম্পোনেন্ট ব্যবহার করে সরাসরি ফাইল ডাউনলোড লিঙ্ক তৈরি করতে পারেন, এবং StreamResource ব্যবহার করে ডাইনামিকভাবে জেনারেট হওয়া বা সার্ভার সাইডের ফাইল স্ট্রিম করতে পারেন। এগুলো ইউজারদের ফাইল ডাউনলোডের একটি নিরাপদ এবং সুগম পদ্ধতি প্রদান করে।
Read more