首页 > 解决方案 > 获取错误的路线而不是在 laravel 中声明的路线来上传文件

问题描述

我正在尝试上传文件。我照常做,但是当我单击提交按钮时,它没有进入发布路线,而是页面正在刷新。我的文件控制器有什么问题吗?除了我申请上传文件的方法外,是否正确?

add_file.blade.php:

<form class="form-horizontal" action="{{url('upload_file')}}" method="post" enctype="multipart/form-data">
                        {{ csrf_field() }} 
                          <fieldset>

                            <div class="control-group">
                              <label class="control-label" for="date01">File name</label>
                              <div class="controls">
                                <input type="text" class="input-xlarge" name="file_name" required="" >
                              </div>
                            </div>

                            <div class="control-group" >
                                <label class="control-label" for="selectError3">Department name</label>
                                <div class="controls" >
                                  <select id="selectError3" name="department_id"style=" width: 200px">
                                    <option>select department</option>
                                    <?php

                                    $all_department=DB::table('dept')
                                                        ->get();

                                foreach($all_department as $v_department){?>
                                    <option value="{{$v_department->department_id}}">{{$v_department->department_name}}</option>
                                    <?php } ?>

                                  </select>
                                </div>
                              </div>

                              <div class="control-group">
                                <label class="control-label" for="selectError3">Session </label>
                                <div class="controls">
                                  <select id="selectError3" name="session_id">
                                    <option>select Session</option>
                                    <?php

                                    $all_session=DB::table('session')


                                            ->get();
                                foreach($all_session as $v_session){?>
                                    <option value="{{$v_session->session_id}}">{{$v_session->session_name}}</option>
                                    <?php } ?>

                                  </select>
                                </div>
                              </div>

                               <div class="control-group">
                                <label class="control-label" for="selectError3">Semester</label>
                                <div class="controls">
                                  <select id="selectError3" name="semester_id">
                                    <option>select semester</option>
                                    <?php

                                    $all_semester=DB::table('semester') 
                                                    ->get();
                                foreach($all_semester as $v_semester){?>
                                    <option value="{{$v_semester->semester_id}}">{{$v_semester->semester_name}}</option>
                                    <?php } ?>

                                  </select>
                                </div>
                              </div>

                              <div class="control-group">
                                <label class="control-label" for="selectError3">Course </label>
                                <div class="controls">
                                  <select id="selectError3" name="course_id">
                                    <option>select course </option>
                                    <?php

                                    $all_course=DB::table('course') 
                                                    ->get();
                                foreach($all_course as $v_course){?>
                                    <option value="{{$v_course->course_id}}">{{$v_course->course_code}}</option>
                                    <?php } ?>

                                  </select>
                                </div>
                              </div>

                                <div class="control-group">
                              <label class="control-label" for="fileInput">Upload file</label>
                              <div class="controls">
                                <input class="input-file uniform_on" name="file_any" type="file" required="">
                              </div>
                            </div>




                            <div class="form-actions">
                              <button type="submit" class="btn btn-primary">Add File</button>
                              <button type="reset" class="btn">Cancel</button>
                            </div>
                          </fieldset>
                        </form>   


文件控制器@存储文件:

public function store(Request $request)
    {

        $this->validate($request,[
            'file_name' =>'required',
            'file_path' =>'required',
            'department_id' => 'required',
            'session_id' => 'required',
            'semester_id' => 'required',
            'course_id' => 'required',


        ]);

        $file = $request->file('file_any');
        $name= $file->getClientOriginalName();
        $extension= $file->getClientOriginalExtension();
        $size = $file->getClientSize();
        $newName= $name . '.' . $extension;
        $path= Storage::putFileAs('public',$request->file('file_any'),$newName);

        $files= File::create([
            'file_name' => $newName,
            'file_path' => $path,
            'department_id' => $request->department_id,
            'session_id' => $request->session_id,
            'semester_id'=> $request->semester_id,
            'user_id' => Auth::id(),
            'course_id' => $request->course_id,
            'file_ext' => $extension,
            'file_size' => $size,
        ]);
        Session::put('message','File added successfully  !!!');
        return redirect()->back();

    }

路线:

  Route::post('upload_file', 'fileController@store');
Route::get('/add_files', 'fileController@create');

标签: laravel

解决方案


似乎file_path在您的验证中是必需的。您必须file_path在表单中添加输入。您也可以尝试在视图表单中添加错误显示。例如,将其添加到您的视图表单中:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

推荐阅读