لاراول آموزش آپلود تصویر (عکس) و ذخیره آن

لاراول آموزش آپلود تصویر (عکس) و ذخیره آن

دسته : فریم ورک لاراول

کد محصول : 117

قیمت : رایگان

آموزش آپلود عکس (تصویر) در لاراول آموزش آپلود عکس در لاراول دارای مطالب و نکات بسیار ساده ای می باشد و شما می توانید آپلود تصویر در لاراول را به چندین روش مختلف انجام دهید. آپلود تصویر یا تصاویر در پروژه های مختلف در کنار فرم ها عموما مورد نیاز شما خواهد بود پس سعی کنید این کار را اصولی انجام دهید و از ایجاد باگ در برنامه جلوگیری کنید. ما در این آموزش مطالب ذیل را انجام خواهیم داد: فرم برای آپلود تصویر اعتبارسنجی فایل ورودی و جلوگیری از آپلود فایل های shell پوشه بندی براساس تاریخ برای ذخیره تصویر ذخیره تصویر در م...


آموزش آپلود عکس (تصویر) در لاراول

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

  • فرم برای آپلود تصویر
  • اعتبارسنجی فایل ورودی و جلوگیری از آپلود فایل های shell 
  • پوشه بندی براساس تاریخ برای ذخیره تصویر
  • ذخیره تصویر در مسیر مربوطه

 

فرم آپلود تصویر در لاراول

برای آپلود تصویر شما احتیاج دارید تا فرم مورد نظرتان قابلیت انتقال فایل را داشته باشد در html با اضافه کردن کد ذیل به فرم می توان قابلیت انتقال فایل را به فرم افزود:

enctype="multipart/form-data"

که به صورت کاملتر به شکل ذیل خواهد بود

<form method="post" enctype="multipart/form-data" action="#">

بر فرض مثال که ما می خواهیم یک فرم با یک input از نوع فایل را داشته باشیم تا یک تصویر را انتقال دهیم پس ابتدا یک کنترلر با دستور ذیل با عنوان PostController ایجاد می کنیم

php artisan make:controller PostController --resource

 سپس در فایل web.php یک مسیر برای دسترسی به این کنترلر به صورت مسیر resource ایجاد می کنیم

Route::resource('Post','PostController');

حال با وارد کردن آدرس Post/create به متد create این کنترلر دسترسی خواهید داشت در این متد یک view را با عنوان دلخواه خود که از قبل ایجاد کرده اید فراخوانی کنید

public function create()
{
	return view('create');
}

ما در این مثال فایل های خود را در مسیرهای اصلی ایجاد کرده ایم در این مثال فایل create.blade.php در مسیر اصلی resource/views ایجاد شده است. در این فایل blade کد فرم خود را ایجاد می کنیم :

<form method="post" enctype="multipart/form-data" action="{{ route('Post.store') }}">
	@csrf
	<div class="row">
		<div class="col-md-6 form-group">
			<label for="file" class="col-md-3 col-form-label">فایل ضمیمه</label>

			<div class="col-md-9">
				<input id="file" type="file" class="form-control @error('file') is-invalid @enderror" name="file">
				@error('file')
					<span class="invalid-feedback" role="alert">
						<strong>{{ $message }}</strong>
					</span>
				@enderror
			</div>
		</div>
	</div>
	<button type="submit" class="btn btn-primary w-100">
		ثبت
	</button>
</form>

در این مثال input با عنوان فایل برای آپلود تصویر می باشد. که این فرم داده های خود را بعد از submit کردن به متد store در کنترلر post ارسال خواهد کرد. که ما اطلاعات را در متد store دریافت خواهیم کرد و تصویر دریافتی را در پوشه تعیین شده قرار می دهیم.

اعتبارسنجی تصویر در لاراول

برای تصاویر آپلودی به دلخواه خود می توانید محدودیت هایی تعیین کنید تا از حملات هکرها جلوگیری کنید که به صورت عمومی محدودیت هایی مانند type تصویر، سایز تصویر ، ضروری بودن مقدار دهی، سطح کاربری و .... که در این مثال چند مثال ساده از اعتبار سنجی تصویر را به صورت ذیل انجام می دهیم:

$this->validate($request,[
            'file' => 'required|mimes:jpg,jpeg,png,gif|max:10240'
        ]);

که با نوع mimes تعیین کرده ایم که چه نوع فایل هایی قابل آپلود هستند و با قانون max حداکثر حجم فایل آپلودی را برابر 10 مگابایت قرار داده ایم (به کیلو بایت مقداردهی می شود).

 

ذخیره عکس در لاراول

برای ذخیره عکس در لاراول ما تا قسمت اعتبارسنجی پیش رفتیم که بعد از آن باید کد آپلود نیز اضافه شود پس کد کاملتر متد store به صورت ذیل خواهد بود:

public function store(Request $request)
{
	$this->validate($request,[
            'file' => 'required|mimes:jpg,jpeg,png,gif|max:10240'
        ]);
		
	$destination= base_path().'/public/post/'.date('Y').'/'.date('m');
	if(!is_dir($destination))
	{
		mkdir($destination,0777,true);
	}
	$destination=$destination.'/';
	$filename=rand(1111111,99999999);
	$file=$request->file('file');
	$file->move($destination,$filename.$request->file->getClientOriginalName());
	return redirect()->back();
}

در ادامه توضیحات باید بگم که یک پوشه به اسم post در مسیر public لاراول ایجاد کردم تا تصویر ارسالی رو با ایجاد پوشه سال و ماه در مسیر نهایی قرار بدم همچنین با تابع rand یک عدد تصادفی ایجاد می کنم و به اسم فایل اضافه می کنم تا تصویر با اسم تکراری آپلود نشود.

 

  • لاراول آموزش آپلود تصویر (عکس) و ذخیره آن را با دوستان خود به اشتراک بگذارید.
  • سوالات خود را در بخش پرسش و پاسخ این مطلب ثبت کنید.
  • مطالب خود را در جاب تیم به اسم خود ثبت کنید ارسال مطلب

کاربر behzadamin
1 هفته پیش

سلام دوست عزیز

برای این کار باید با php به این آدرس مراجعه کنید

https://stackoverflow.com/questions/13743780/php-upload-an-image-file-through-url

 

اما در لاراول می توانید با ایتفاده از guzzle اینکار رو تر تمیزتر انجام بدید

 

 

 

 

کاربر amin.ferasat
1 هفته پیش

سلام
ذخیره عکس با استفاده از url چطور هست ؟

یعنی عکس آدرس عکس را بدیم و درسرور ذخیره اش کند.


ثبت سوال/پاسخ
بهزاد میرزازاده
در مورد کاربر : همیشه سخت تلاش کردم و به موفقیت های خیلی زیادی رسیدم اما دلیل نشد که متوقف بشم من برای هر روز برنامه دارم و به امید موفقیت های بزرگتر قدم بر میدارم همیشه سخت ترین مسئله ها، ساده ترین راه حل رو دارند پس بهانه جویی نباید روش کار ما برنامه نویسان باشه!!! ما می توانیم آینده را تعیین کنیم
اشتراک گذاری این مطلب
{