简体   繁体   English

Laravel 5.4 更新方法和上传文件

[英]Laravel 5.4 Update method and uploading files

I would like in the method update() to upload files to the server.我想在方法update()中将文件上传到服务器。

upload method:上传方法:

    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;
    }
}

update method:更新方法:

    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');
}

However, when I send the form error occurs.但是,当我发送表单时会发生错误。

enter image description here在此处输入图片说明

But the same code with the upload () method store works very well.但是同样的代码用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');
}

Try to override the update method.尝试覆盖更新方法。 I've been through this, my solution was this.我经历过这个,我的解决方案是这样的。 See if you solve your problem.看看你是否解决了你的问题。

 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');

    }

I've just got this issue and fixed it using Input::all instead of $request object, something like:我刚刚遇到了这个问题,并使用Input::all而不是$request对象修复了它,例如:

$data = Input::all();
if(isset($data['image'])) {
    ... // Do your thing
}

It seems like there is any issue with the request helper/class and the UploadedFile when you make PUT instead of pure POST当您使用PUT而不是纯POST时, request助手/类和UploadedFile似乎存在任何问题

Cheers!!...干杯!!...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM