user1760710
user1760710

Reputation:

Laravel 5.5 - $request->file returns null

I have created a form that uploads a file but it returns a null value when I submit. When I add in the enctype="multipart/form-data" it reloads the page and doesn't seem to go through my controller.

MY HTML FORM

<form class="form-horizontal" role="form" name="importform" method="POST" action="{{ route('import_type') }}" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="control-group">
  <label class="control-label">&nbsp;</label>
<div class="controls">
<div class="control-group text-center">
  <label class="btn btn-primary" for="file-selector">
  <input id="file-selector" name="template_upload" type="file" value="" required autofocus style="display:none" onchange="$('#upload-file-info').html(this.files[0].name)" required>                                    Upload List               </label>
   <span class='label label-default' id="upload-file-info"></span>
   </div>
   </div>
   </div>
   <div class="control-group">
   <div class="controls">
    <input class="btn btn-primary" type="submit" id="import-submit" name="import-submit">
    </div>
    </div>
    </form>

MY CONTROLLER: I am using the import method

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\ImportTypeRequest;
use \App\Guest;
use \App\Role;
use \App\User;
use \App\Type;
use Illuminate\Support\Facades\Auth;



class GuestController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {

        $user = User::with('roles')->where('id', Auth::id())->get();
        $types = Type::where('user_id', Auth::id())
            ->where('active',1)->get();


        return view('view_import',compact('user','types'));

    }

    public function import(ImportTypeRequest $request)
    {


        $template_upload = $request->file('template_upload');
        dd($template_upload);
    }
}

Upvotes: 1

Views: 6881

Answers (1)

Ahmed Essam
Ahmed Essam

Reputation: 1010

Here are some suggested ways trying to solve this.

First of all in your import method add dd($request->all()) at its top and see what's the response. You should see all your form data and of course template_upload file. That's how you make sure that you see all the coming data from your form to your controller method.

Then try to get rid of ImportTypeRequest and just use Illuminate\Http\Request to see what will you get. If you got different result then the problem is in ImportTypeRequest class.

Then why don't you just use $request->template_upload?! It's cleaner I guess.

Upvotes: 1

Related Questions