آموزش لاراول – آپلود فایل و عکس
- توسط : علی حسین شهابی
- 0 نظر
با سلام خدمت شما دوستان عزیزم
امیدوارم همیشه از لاراول لذت ببرین
خب امروز میخوام درباره اپلود فایل به وسیله فریم ورک لاراول صحبت کنم.شاید براتون پیش اومده باشه که داخل پروژتون مثلا نیاز دارین تا عکسی رو برای هر محصول یا عکسی رو برای هر کاربر ذخیره کنید.
امروز یه فرم ساده می سازیم بعد به وسیله این فرم عکسی رو اپلود می کنیم و اون رو در جای دیگر ذخیره می کنیم.
برای شروع میریم سراغ ساختن فرم امون.
<!doctype html>
Laravel
{{ Form::open(array('url'=>'form-submit','files'=>true)) }}
{{ Form::label('file','File',array('id'=>'','class'=>'')) }}
{{ Form::file('file','',array('id'=>'','class'=>'')) }}
{{ Form::submit('Save') }}
{{ Form::reset('Reset') }}
{{ Form::close() }}
در کد بالا ما فرم مورد نیاز رو ساختیم.یادمون هست که این فرم رو با استفاده از امکانی به نام blade در لاراول پیاده سازی کردیم.
نکته : پارامتر files را در فرم برابر true قرار دهید تا ارسال فایل از طریق فرم انجام شود.
|
حالا در فایل Route.php دو مسیر ایجاد می کنیم.یکی برای نشان دادن فرم و دیگری برای ذخیره ی اطلاعاتی که به وسیله ی این فرم ارسال میشه.
//app/routes.php
Route::get('form', function(){
return View::make('form');
});
Route::any('form-submit', function(){
var_dump(Input::file('file'));
});
همان طور که می دانید تا قبل از امروز، هر اطلاعاتی که ارسال میکردیم در آرایه های GET_$ یا POST_$ ذخیره میشد مثلا نام و نام خانوادگی یا تلفن یا متن پست ها یا ….
ولی فایل هایی که ارسال می کنیم در آرایه ی FILES_$ ذخیره میشه و به وسیله ی این آرایه می تونیم به نام فایل ، ادرس اش ، سایز اش ، پسوندش و .. دسترسی داشته باشیم.
در لاراول برای دسترسی به مشخصات فایل های ارسالی و همچنین ذخیره کردن اون از Input::file استفاده می کنیم.
در ادامه تمام پارامترهای مورد نیازمون رو باهم مرور می کنیم.
متد getFilename
وقتی فایلی مانند عکس رو با فرم امون ارسال می کنیم. به وسیله ی متد getFilename به نام اش دسترسی خواهیم داشت . البته این نام ، نام اصلی اون فایل نیست ، بلکه نامی است که در حافضه موقت (temporary )، به اون فایل داده شده است.
Route::any('form-submit', function(){
return Input::file('file')->getFilename();
});
متد getClientOriginalName
به وسیله ای این متد ، به نام اصلی اون فایلی که ارسال شده دسترسی خواهیم داشت.
Route::any('form-submit', function(){
return Input::file('file')->getClientOriginalName();
});
متد getClientSize
با استفاده از این متد ، به حجم فایلی که به وسیله ی فرم ارسال کردیم دسترسی داریم.یادمون باشه که این حجم بر حسب بایت است.
Route::any('form-submit', function(){
return Input::file('file')->getClientSize();
});
متد getClientMimeType
با استفاده از این متد ، می توانیم نوع فایلی که ارسال شده است را مشخص کنیم.
Route::any('form-submit', function(){
return Input::file('file')->getClientMimeType();
});
متد guessClientExtension
با استفاده از این متد میتوانیم ببینیم پسوند فایلی که ارسال شده چیست .
مثلا چک میکنیم اگر پسوند مساوی jpg بود اون رو قبول کن وگرنه به کاربر اخطار بده که فایلی با پسوند jpg را وارد کند.
Route::any('form-submit', function(){
return Input::file('file')->guessClientExtension();
});
متد getRealPath
با استفاده از این متد ، به مکانی را که فایل در حافظه ی موقت ذخیره شده دسترسی داریم و میتونیم اون رو چک کنیم.
Route::any('form-submit', function(){
return Input::file('file')->getRealPath();
});
متد move
متد move برای انتقال فایل ارسال شده توسط فرم ، به مقصد جدید است.این متد 2 پارامتر دارد.یکی ادرس جدید ، و دیگری نام جدید فایل می باشد.
Route::any('form-submit', function(){
return Input::file('file')
->move(__DIR__.'/storage/',Input::file('file')
->getClientOriginalName());
});
درکد بالا ما گفتیم فایل رو در همان شاخه و در پوشه ی storage و با همان نام اصلی خودش ذخیره کن.
متد hasFile
با استفاده از این متد ، میتونیم چک کنیم آیا فایلی ارسال شده است یا خیر ؟
if(Input::hasFile('file')){
return "The file exists in Inputs.";
}
متد isValid
با استفاده از این متد مشخص میکنیم آیا فایل به درستی ارسال شده است یا خیر
if (Input::file('file')->isValid()){
return "Yesss !! the file is valid.";
}
خب اینم از آپلود فایل هامون با استفاده از لاراول ، امیدوارم به کارتون بیاد
مثل همیشه آرزوی شادی و موفقیت براتون دارم