روشی ساده برای آپلود فایل و ذخیره‌ی نام آن در دیتابیس

در این سناریو تنها قصد دارم یک فایل را آپلود و نام آن را در دیتابیس خود ذخیره کنم. برای همین هیچ عملیات validation و اعمال محدودیتی روی آن انجام نمی‌دهم.

همچنین فایل خود را در قسمت storage لاراول ذخیره می‌کنم. بدیهی است راه‌های دیگری نیز برای آپلود تصاویر وجود دارد که این روش کار را بسیار ساده‌تر کرده است:

$data = $request->all(); //دریافت اطلاعات فرم
$user = User::where('id', 5)->first(); //یافتن سطر مورد نظر
$file = $request->file('profile_image'); //فیلد مورد نظر برای آپلود

$query = Profile::where('user_id', $user->id); //انتخاب رکورد منتناظر در جدول users با جدول profiles

if ($file != NULL) {
	$path = $request->file('profile_image')->store('Profiles');
	$query->update([
		'title' => $data['title'],
		'profile_image' => $path,
	]);
} else {
	$query->update([
		'title' => $data['title'],
	]);
}

توضیح: برخی توضیحات را به صورت کامنت در بالا ذکر کرده‌ام، ولی به طور کلی کاربر قصد دارد از طریق یک فرم که دارای دو فیلد، یکی برای عنوان (title) و دیگری برای ارسال فایل (profile_image) تعبیه شده، اطلاعاتی را به سمت سرور ارسال کند.

فرض نیز بر این است که ارسال تصویر اختیاری و ارسال عنوان اجباری است. برای همین دو حالت در نظر گرفته شده که اگر کاربر فایلی انتخاب کرد، چک شده و حالت اول update در کنترلر اجرا شود و در غیر اینصورت نیز حالت دوم که تنها شامل title است.

فایل‌ها نیز در storage قابل دسترسی‌اند و حتی به فراخور نیاز می‌توان آن‌ها را بر اساس تاریخ و ماه دسته‌بندی کرد.

درباره نویسنده: احسان

مطالب زیر را حتما بخوانید