Laravel返回“在字符串上调用成员函数getClientOriginalExtension()”

时间:2018-10-01 05:21:17

标签: php laravel

我尝试通过Laravel表单上传图片,但收到此错误消息

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to a member function getClientOriginalExtension() on string

我的代码

//photo.blade.php
{{ Form::file('photo', null, array('class' => 'form-control')) }}

//controller.php
$image      = Input::get('photo');
            $fileName   = $user->id . '.' . $image->getClientOriginalExtension();

            $img = Image::make($image->getRealPath());
            $img->resize(500, 500, function ($constraint) {
                $constraint->aspectRatio();                 
            });

            $img->stream();
            Storage::disk('local')->put('images/'.$fileName, $img, 'public');

3 个答案:

答案 0 :(得分:1)

不确定您正在使用哪个版本的laravel。但是请尝试像这样读取文件。

$image = Input::file('photo');

或来自请求对象。

request()->file('photo');

也像@Forkule所说的那样,确保您的表单具有enctype="multipart/form-data"属性。

答案 1 :(得分:0)

在表单中使用enctype="multipart/form-data"

像这个<form method="post" action="giveaction" enctype="multipart/form-data">

答案 2 :(得分:0)

您应该使用

$file = Input::file('photo');

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

因为

Input::get('photo');

返回文件名而不是文件对象。