$ request file return me exception-“在null上调用成员函数move()”
<form action="{{url('/addnews')}}" class="reviews-form" role="form"
<input type="file" name="file">
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
控制器中的:
public function AddData(Request $request)
{
$file=$request->file('file');
$file->move('images',$file->getClientOrginalName());
}
答案 0 :(得分:3)
您的<form>
代码需要enctype="multipart/form-data"
(以及method="post"
)。如果没有enctype,请求中不会包含任何文件数据,导致$request->file('file')
为空。
在尝试移动文件之前,您还应该检查$request->file('file')
是否为文件(Laravel的验证类具有专门针对此的file
规则)。您的一些用户肯定会忽略上传文件,并且应该收到有用的验证错误而不是例外。
答案 1 :(得分:3)
定义方法:POST,你不能使用GET方法发送文件(没有确切定义它充当GET
定义enctype参数以通知Web服务器您正在发送文件
修复表单:
<form action="{{url('/addnews')}}" method="post" enctype="multipart/form-data" class="reviews-form" role="form">
<input type="file" name="file">
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
我希望您在路由器文件中定义POST / addnews 是指您的控制器 addData 操作。
我建议使用命名路由使您的代码更准确,使其符合惯例。
从addData =&gt;更改操作名称创建,
并使您的routes.php文件具有以下内容:
Route::post('/news', ['as' => 'news.add', 'uses' => 'NewsController@create']);
形式:
<form action="{{route('news.add')}}" method="post" enctype="multipart/form-data" class="reviews-form" role="form">
<input type="file" name="file">
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>