17
تشکر

آپلود فایل در Laravel

Laravel

Laravel

شاید پیش از این، ساخت فرم و اعتبارسنجی آن در لاراول را تجربه کرده اید اما آپلود فایل کمی تفاوت دارد، اجازه بدهید تا اولین آپلود فایل در لاراول را با هم انجام دهیم.

پیش از هر چیز، نیاز داریم که یک فرم ساده و دو Route بسازیم. Route اول برای خروجی View و Route دیگر برای ارسال فرم(Post).

در ادامه مطلب همراه ما باشید…

آموزش آپلود فایل در Laravel

نکته : پارامتر files را در فرم برابر true قرار دهید تا ارسال فایل از طریق فرم انجام شود.

<!--app/views/form.blade.php-->
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Laravel</title>
</head>
<body>
  {{ Form::open(array('url'=>'form-submit','files'=>true)) }}  

    {{ Form::label('file','File',array('id'=>'','class'=>'')) }}
    {{ Form::file('file','',array('id'=>'','class'=>'')) }}
    <br/>

    <!-- submit buttons -->
    {{ Form::submit('Save') }}

    <!-- reset buttons -->
    {{ Form::reset('Reset') }}
 
  {{ Form::close() }}
</body>
</html>
//app/routes.php
Route::get('form', function(){
  return View::make('form');
});

Route::any('form-submit', function(){
  var_dump(Input::file('file'));
});

اساسا، فایل های آپلود شده در آرایه های GET_$ یا POST_$ ذخیره نمی شوند بلکه آنها در آرایه FILES_$ ذخیره می شوند. خوشبختانه لاراول، API گسترده ای به منظور دسترسی به آرایه FILES_$ فراهم کرده است. شما می توانید برای دریافت داده های، فایل های آپلود شده از متد Input::file استفاده کنید. اجازه بدهید ابتدا از مقادیر Input::file مطلع شویم.

object(Symfony\Component\HttpFoundation\File\UploadedFile)[9]
  private 'test' => boolean false
  private 'originalName' => string 'test.jpg' (length=22)
  private 'mimeType' => string 'image/jpeg' (length=10)
  private 'size' => int 667220
  private 'error' => int 0

بسیارخب؛ حالا می توانیم از طریق یکسری از متدها با داده های بالا، ارتباط برقرار کنیم.

متد getFilename

متد getFilename برای گرفتن نام فایل موقتی است که اکنون در مکان temporary در سرور است نه نام اصلی فایل. مثال:

Route::any('form-submit', function(){
  return Input::file('file')->getFilename();
});

متد getClientOriginalName

متد getClientOriginalName برای گرفتن نام واقعی فایل، زمانیکه آپلود شده است.

Route::any('form-submit', function(){
  return Input::file('file')->getClientOriginalName();
});

متد getClientSize

متد getClientSize برای گرفتن، حجم فایل آپلود شده بر حسب بایت است.

Route::any('form-submit', function(){
  return Input::file('file')->getClientSize();
});

متد getClientMimeType

متد getClientMimeType برای گرفتن نوع فایل آپلود شده است.

Route::any('form-submit', function(){
  return Input::file('file')->getClientMimeType();
});

متد guessClientExtension

متد guessClientExtension به منظور دستیابی به پسوند فایل آپلود شده است.

Route::any('form-submit', function(){
  return Input::file('file')->guessClientExtension();
});

متد getRealPath

متد getRealPath برای دریافت مکان جاری فایل آپلود شده است (مکان موقت در پوشه tmp).

Route::any('form-submit', function(){
  return Input::file('file')->getRealPath();
});

متد move

متد move برای انتقال فایل آپلود شده به مکان دیگری در سرور است. پارامتر اول مقصد جدید فایل و پارامتر دوم نام جدید برای فایل است. مثال:

Route::any('form-submit', function(){
  return Input::file('file')
         ->move(__DIR__.'/storage/',Input::file('file')
         ->getClientOriginalName());
});

متد hasFile

Input::hasFile بررسی می کند که چنین فایلی در ورودی فرم وجود دارد یا نه.

if(Input::hasFile('file')){
  return "The file exists in Inputs.";
}

متد isValid

متد isValid بررسی می کند که آیا فایل موردنظر به درستی آپلود شده است یا خیر.

if (Input::file('file')->isValid()){
  return "Yesss !! the file is valid.";
}
این مطلب از سری مطالب، آموزش فریم ورک Laravel است
  • این الان پراگرس بار داره؟
    اپلود کردن با خود پی اچ پی خام که راحت تره داداش

  • محمد می‌گه:

    لطفاً آموزش هاتون رو بیشتر کنین.

  • مرسی از مطلب خوبتون همیشه بهترینی

  • jalal می‌گه:

    بازم درست نشد همون خطا رو میده

  • jalal می‌گه:

    سلام من لاراول رو نصب کردم با کامپوزر همه چی درست پیش رفت اما موقع اجرا خطا404 میده توی زمپ نصب کردم همه چی درس اجرا شده مشکلی نداره ممنون اگه راهنماییم کنید
    یا حق

    • آرمان می‌گه:

      اگه فکر می کنید همه چی درسته، احتمالا mod_rewrite تون غیرفعاله ، به آدرس public اتون آخرش index.php اضافه کنید، ببینید درست میشه.

  • ALI می‌گه:

    آفرین آفرین خیلی خوبه

    تا باشه آموزش لاراول

    واقعا دمتون گرم


  • نظرات این مطلب بسته است.