在null laravel上调用成员函数getClientOriginalName()

时间:2017-10-23 08:52:37

标签: php laravel file-upload

当我尝试上传pdf文档文件时,我一直收到此错误,是否有人知道如何解决此问题?

我曾尝试寻找类似的问题,但仍然无法解决(例如:Upload pdf file using Laravel 5

我尝试dd()来查看该文件是否已上传并且确实显示了文件名,但错误显示为Call to a member function getClientOriginalName() on null,所以现在我对于该怎么做感到困惑现在。

以下是我的代码,请提前感谢您的帮助。

控制器:

 class CreateController extends Controller
{
    public function create(){

    return view('create');
}
public function store(Request $request){

  $uniqueFileName = uniqid() . $request->get('upload_file')->getClientOriginalName() . '.' . $request->get('upload_file')->getClientOriginalExtension();

   $request->get('upload_file')->move(public_path('files') . $uniqueFileName);
//dd($request);
   return redirect()->back()->with('success', 'File uploaded successfully.');
}

create.blade.php

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

             {{  csrf_field()  }}
          <div class="form-group">
     <label for="upload_file" class="control-label col-sm-3">Upload File</label>
     <div class="col-sm-9">
          <input class="form-control" type="file" name="upload_file" id="upload_file">
     </div>
</div>


 <div class="form-group">
            <div class="col-md-6-offset-2">
              <input type="submit" class="btn btn-primary" value="Save">
            </div>
          </div>
</form>

路线:

Route::get('/user/create','CreateController@create');
Route::post('/user','CreateController@store');

6 个答案:

答案 0 :(得分:2)

您需要使用file()功能才能访问上传的文件

$request->file('upload_file')

答案 1 :(得分:1)

尝试将文件放入var。

$file = $request->file('upload_file');

从中获取扩展名和名称。

 $uniqueFileName = uniqid() . $file->getClientOriginalName() . '.' . $file->getClientOriginalExtension();

希望它有所帮助。

答案 2 :(得分:1)

这个enctype解决了null问题上的函数调用

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

答案 3 :(得分:0)

解决此问题的关键是,您必须在getClientOriginalName()子句中编写if函数,如下所示:

if($request->hasFile('logoImage')){
    $logoImage = $request->file('logoImage');
    $name = $logoImage->getClientOriginalName();
}

答案 4 :(得分:0)

以标签形式enctype="multipart/form-data"

使用此代码
<form method="" action="" enctype="multipart/form-data">

答案 5 :(得分:0)

if($request->has('sound_file')) {
            $image = $request->file('sound_file');
            $filename = $image->getClientOriginalName();
            request()->$image->move(public_path('images/users'), $filename);
            $sounds->image = $request->file('sound_file')->getClientOriginalName();
        }