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;确保您的逻辑也通过了框架。