Laravel:$ request-> hasFile()无法正常工作在字符串

时间:2018-08-25 08:05:05

标签: php laravel-5 laravel-5.6 laravel-request

我正在与laravel 5.6一起使用HTML表单上传文件,但是在控制器中检索文件时遇到了问题。

当我以这种方式检索它时,它返回OK return $ request;它正在控制器中检索,但不在hasFile()函数中检索,或者 getClientOriginalExtension()

我搜索了许多网站,但问题仍然存在。我所匹配的所有东西都无法正常工作。

  

错误:“对成员函数getClientOriginalExtension()的调用为空”

HTML表单视图:

<form  action="{{url('/changeProductImage')}}" enctype="multipart/form-data" method="post">
    {{csrf_field()}}
    <input type="file" name="photo" id="photo"  class="btn btn-secondary">
    <hr>
    <button type="submit" value="upload" class="form-control btn btn-primary btn-fill btn-lg">Upload Image</button>
</form>

路线:

Route::post('/changeProductImage','ProductsController@upload');

控制器:

function upload(Request $request)
{
     $image = $request->file('photo');

     $new_name = rand() . '.' . $image->getClientOriginalExtension();

     $image->move(public_path('images'), $new_name);
     return back()->with('success', 'Image Uploaded Successfully');
}

2 个答案:

答案 0 :(得分:0)

很难说看这段代码有什么问题。假设您确实是这样发送的(例如,您没有在某处使用AJAX),它应该可以工作。

我该怎么做,请确保在您的控制器中有:

use Illuminate\Http\Request;

仅是为了确保您在控制器中提出的这一要求就是这一行。

还请记住,您可能应该进行一些验证以确保文件确实是您想要的类型,或者至少应该有一些其他逻辑,例如:

function upload(Request $request)
{
     if (!$request->hasFile('photo') {
        return back()->with('error', 'Missing image!');
     }

     $image = $request->file('photo');

     $new_name = rand() . '.' . $image->getClientOriginalExtension();

     $image->move(public_path('images'), $new_name);
     return back()->with('success', 'Image Uploaded Successfully');
}

答案 1 :(得分:0)

可能您正在使用此语句 使用Illuminate \ Support \ Facades \ Request;

已安装 使用Illuminate \ Http \ Request;