آپلود فایل در لاراول با livewire

به نام خدا .



برای آپلود فایل ابتد باید یک فرم Html داشته باشیم .

<form wire:submit.prevent=&quotstore&quot>
        <label> file: </label>
        <input type=&quotfile&quot wire:model=&quotimage&quot>
        <button type=&quotsubmit&quot>Submit</button>
</form>


حالا وارد کامپوننت مربوطه می شویم .

1) قطعه کد زیر را بیرون از کلاس کامپوننت می نویسیم :

use Livewire\WithFileUploads;

2) و قطعه کد زیر را داخل کلاس کامپوننت می نویسیم :

use WithFileUploads;


داخل فایل مادل مربوط به دیتابیس جدول مربوطه را بشناسانید :

مثلا

$table = &quotposts&quot

در اینجا posts اسم جدولی است که میخواهیم مادل به آن وصل شود و نام عکس در ان ذخیره شود.


حالا مایگریشن را اماده میکنیم و ان را migrate میکنیم فرض کنید جدول پست فقط دو ستون به اسم های image و id دارد.


آی دی اتو انکریمنت است .


داخل کلاس کامپوننت کد زیر را می نویسیم :

public $image;
public function store()
{
$post = new Post();
$imageName = Carbon::now()->timestamp.'.'.'jpg';
$this->image->storeAs('img',$imageName);
$post->image = $this->image;
$post->save();
return redirect(route('index'));
}


حالا وارد مصیر زیر شود :

config/filesystems.php


در disks / local ، روت (root) را پیدا کنید .

میبینید که کد زیر نوشته شده است :

'root' => storage_path('app')

آن را حذف کنید و کد زیر را بنویسید :

'root' => public_path('assets')

حالا وارد مصیر زیر شوید :

public/assets

اگر در public پوشه ای به اسم assets ندارید یکی بسازید و داخل آن یک پوشه جدید به اسم img بسازید تا عکس ها داخل آن ذخیره شوند .

پیروز و موفق باشید .

مهدی مومنی