যেকোন ব্যকেন্ড এপ্লিকেশনের জন্যে storage খুবই গুরুত্বপূর্ন একটা বিষয়। লারাভেলে আমরা locally আমাদের ফাইল গুলা store করতে পারি, তবে লোকাল বা প্রজেক্টের মধ্যতেই ফাইল সংরক্ষণ করা ছোট প্রজেক্ট এর জন্যে হয়তো ঠিক আছে কিন্তু লার্জ বা মিডিয়াম লেভেল এর প্রজেক্ট এর জন্যে এটি মোটে recommended না। কারণ এতে করে আপনার প্রজেক্ট এর সাইজ অনেক বড় হতে থাকবে। এর জন্যে আমাদের উচিত লাইফ গুলি প্রজেক্ট এর ভেতরে না রেখে কোন একটা ডেডিকেটেট ফাইল সার্ভার এর মাধ্যমে ফাইল সার্ভ করা।
কেবল মাত্র ফাইল সংরক্ষণ করার জন্যে আমাদের কাছে এখন অনেক অনেক ভালো সার্ভিস এভাইলেবল তার মধ্যে বেশির ভাগই পেইড সুতরাং আপনাকে এই সার্ভিস গুলি ব্যবহার করতে প্রতি মাসে অবশ্যই কিছু টাকা খরচ করতে হবে।
AWS S3, Digital ocean spaces, Google Cloud storage এই সার্ভিস গুলি পুরু পুরি পেইড, তবে আমাদের কাছে আরও একতা চমৎকার সার্ভিস Cloudinarty আছে সেটি পুরুপুরি ফ্রি না হলে ফ্রি টিয়ারে তারা যা দেয় তা একটা মিডিয়াম লেভেল এর প্রজেক্ট এর জন্যে enough এর চেয়ে অনেক বেশি।
আপনি যদি টেকডায়েরির ইমেজ গুলি খেয়াল করেন, দেখতে পাবেন এখানেও cloudinary এর ইমেজ সার্ভিস ব্যবহার করা হয়েছে।
Cloudinary ফ্রিতে আপনাকে প্রতি মাসে ২৫ জিবি storage দিচ্ছে।
লারাভেল Cloudinary
লারাভেল এ cloudinary স্টোরেজ সেবা সংযুক্ত করার ক্ষেত্রে আপনি [লারাভেল ক্লাউডিনারি] প্যাকেজটি ব্যবহার করতে পারেন। কিন্তু আমার কাছে মনে হচ্ছে এই প্যাকেজটি অফিশিয়াল নয় এবং খুব বেশি maintain ও করা হয়না মনে হচ্ছে। কারণ লারাভেল সম্প্রতি তাদের ভার্সন ৯ রিলিজ দিয়েছে, দুঃখজনক ভাবে লারাভেল ভার্সন ৯ এই প্যাকেজটি কাজ করছে না। তাই আমি দেখাবো কীভাবে কোন থার্ডপার্টি প্যাকেজ ব্যবহার না করে, cloudinary এর অফিশিয়াল PHP SDK প্যাকেজ ব্যবহার করে লারাভেল থেকে ইমেজ আপলোড করা যায়।
এখানে আমি উদাহরণ সরূপ টেকডায়েরির ফাইল আপলোড Controller টি আপনার সামনে আরেকবার তৈরি করে দেখাবো। টেকডায়েরিতে আমরা ফাইল আপলোড এবং ডিলিট করার জন্যে দুটি api endpoint তৈরি করেছিলাম।
টেকডায়েরির ফাইল রিলেটেড আপিয়াই গুলি দেখতে এখানে ক্লিক করুন
চলুন শুরু করা যাক।
প্রথমেই আমি একটা controller তৈরি করছি।
php artisan make:controller UploadController
UploadController ক্লাসে আমতা দুটি মেথড লিখব, একটার কাজ হচ্ছে ইমেজ আপলোড করা এবং অপরটির কাজ ইমেজ ডিলেট করা।
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UploadController extends Controller
{
/**
* Upload file to Cloudinary
*
* @param Request $request
* @return void
*/
public function upload(Request $request)
{
}
/**
* Delete file
*
* @param Request $request
* @return void
*/
public function destroy(Request $request)
{
}
}
ইমেজ আপলোড
শুরুতেই বলেছিলাম আমরা এখানে ইমেজ আপলোড করার জন্যে কোন থার্ড পার্টি লারাভেল প্যাকেজ ব্যবহার করব না, আমরা ইমেজ আপলোড করব cloudinary এর অফিশিয়াল php sdk ব্যবহার করে। সুরতাং আমাদের এখন প্রথম কাজ হবে cloudinary এর php sdk কম্পোজার দিয়ে install করা।
composer require "cloudinary/cloudinary_php"
ইমেজ আপলোড করার জন্যে আমাদের লাগবে cloudinary php sdk এর new Cloudinary()
কন্সট্রাক্টর।
$cloudinary = new Cloudinary($config);
new Cloudinary()
কন্সট্রাক্টর প্যরামিটিয়ার হিসেবে একটি configuration associative array গ্রহণ করে।