کار با وابستگی Image Intervention برای آپلود عکس در لاراول
3 دقیقه
وابستگی Image Intervention از معروف ترین وابستگی برای آپلود عکس در لاراول است. همین طور که می ببینید که نسخه ۳ این وابستگی تغییرات کلی صورت گرفته است و با کدهای نسخه ۲ آن سازگار نیست و نیاز به تغییراتی دارد.
۱. در جدول users فیلد به نام image ایجاد کنید:
$table->string('image')->nullable();
۲. در فرم فیلد عکس ایجاد کنید:
<div class="col-12">
<label for="input8" class="form-label">عکس کاربر</label>
<input type="file" name="image" class="form-control rounded-5 @error('image') is-invalid @enderror" id="input8">
@error('image')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
۳. وابستگی Image Intervention را نصب کنید که نیازمند PHP 8.1 است.
composer require intervention/image
۴. در ویندوز xampp اکستنشن extension=imagick.so را فعال کنید و در لینوکس دستور زیر را برای نصب Imagick وارد کنید:
sudo apt install php-imagick
php -m | grep imagick
sudo systemctl restart apache2
۵. یک تابع saveImage در User.php ایجاد کنید:
use Intervention\Image\ImageManager;
public static function saveImage($file)
{
if ($file){
$name = $file->hashName();
$smallImage = ImageManager::imagick()->read($file->getRealPath());
$bigImage = ImageManager::imagick()->read($file->getRealPath());
$smallImage->resize(256, 256, function ($constraint){
$constraint->aspectRatio();
});
Storage::disk('local')->put('users/small/'.$name, (string) $smallImage->encodeByMediaType('image/jpeg', 90));
Storage::disk('local')->put('users/big/'.$name, (string) $bigImage->encodeByMediaType('image/jpeg', 90));
return $name;
}else{
return "";
}
}
۶. کد زیر در UserController.php وارد کنید:
public function store(Request $request)
{
$image = User::saveImage($request->image);
User::query()->create([
'name' => $request->name,
'email' => $request->email,
'mobile' => $request->mobile,
'password' => bcrypt($request->password),
'image' => $image,
]);
return to_route('users.index');
}
۷. در قسمت config/filesystem.php کد زیر را وارد کنید:
'local' =>
[
'driver' => 'local',
'root' => public_path('images'),
'throw' => false,
],
۸. برای نمایش عکس کاربر کد زیر را وارد کنید:
@foreach($users as $index=>$row)
<figure>
<img src="{{asset('images/users/small/' .$row->image)}}" class="rounded-4" width="52px">
</figure>
@endforeach
موفق باشید 🙂
پیوند منابع
لاراول (Laravel) مارس / 30 / 2024
951
دوره های آموزشی
نوشته مرتبط
- خطای could not found driver در لاراول 94
- نکته امنیتی: فقط از env() در فایل های Config استفاده کنید 174
- استفاده از Boolean Query در لاراول 372
- دستورات جدید در لاراول ۱۱ 852
- ایجاد قوانین اعتبار سنجی سفارشی (Validation Rules) برای لاراول 906
- کار با وابستگی Image Intervention برای آپلود عکس در لاراول 951
- رفع مشکل اتصال به دیتابیس در لاراول ۱۱ 1168
- بدست آوردن .env در هنگام نصب پروژه لاراولی از گیت هاب 1289
- افزودنی های ویرایشگر VSCode برای توسعه لاراول 1768
- راه ساده نمایش اعلان ها در لاراول 990