我尝试通过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');
答案 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');
返回文件名而不是文件对象。