Php Lravel 5.4更新方法和上传文件
我想在方法更新上传文件到服务器 上传方式:Php Lravel 5.4更新方法和上传文件,php,laravel,file-upload,laravel-5.4,Php,Laravel,File Upload,Laravel 5.4,我想在方法更新上传文件到服务器 上传方式: private function upload($request){ if($request->hasFile('image')){ $image = $request->file('image'); $extension = $request->file('image')->getClientOriginalExtension(); $generate_name
private function upload($request){
if($request->hasFile('image')){
$image = $request->file('image');
$extension = $request->file('image')->getClientOriginalExtension();
$generate_name = md5(uniqid(rand(), true));
$file_name = $generate_name . '.' . $extension;
$image->move(public_path() . '/post_image/', $file_name);
return $file_name;
}
}
更新方法:
public function update(ArticleRequest $request, $id)
{
$article = Article::FindOrFail($id);
$file = $this->upload($request);
$article->image = $file;
$article->update($request->all());
Session::flash('message', 'Wpis został edytowany!');
return redirect('articles');
}
但是,当我发送表单时会发生错误
但是使用upload方法store的代码运行得非常好
public function store(ArticleRequest $request)
{
$article = new Article($request->all());
$file = $this->upload($request);
$article->image = $file;
Auth::user()->articles()->save($article);
Session::flash('message', 'Wpis został dodany!');
return redirect('articles');
}
我刚刚解决了这个问题,并使用Input::all而不是$request对象修复了它,例如:
$data = Input::all();
if(isset($data['image'])) {
... // Do your thing
}
当您使用PUT而不是纯POST时,请求助手/类和上载文件似乎有任何问题
干杯 尝试覆盖更新方法。我经历过这一切,我的解决办法就是这样。看看你能不能解决你的问题
public function save(Request $request){
$data = $request->all();
if($request->hasFile('file')){
$image = $request->file('file');
$num = rand(1234,8976);
$dir ="img/courses/";
$ext = $image->getClientOriginalExtension();
$nameImage = "image".$num.".".$ext;
$image->move($dir,$nameImage);
$data['image'] = $dir."/".$nameImage;
}
YoutClass::create($dados);
return redirect()->route('ROUTE');
}
发布错误而不是错误图片您是否对事件创建和更新使用相同的表单?您可以将表单发布到此处进行调试吗?覆盖任何框架方法时请小心,因为它可能会产生意外的结果。始终使用returnparent::save;确保您的逻辑也通过了框架。