Laravel LAVEL图像路径存储为.tmp

Laravel LAVEL图像路径存储为.tmp,laravel,image,php-7.3,Laravel,Image,Php 7.3,我正在尝试在数据库中存储图像: public function update(Request $request, $id) { if ($request->hasFile('image')) { $image = $request->file('image'); $filename = time() . '.' . $image->getClientOriginalExtension();

我正在尝试在数据库中存储图像:

   public function update(Request $request, $id)
   {

       if ($request->hasFile('image')) {
           $image = $request->file('image');
           $filename = time() . '.' . $image->getClientOriginalExtension();
           $path = 'storage/images/' . $filename;
           Image::make($image->getRealPath())->resize(300, 300)->save($path);
       }

       $this->productservice->update($request, $id);


       return redirect()->back()->with('status', 'Product has been updated succesfully');
   }
我以前在拉雷维尔也这样做过,从来没有遇到过问题。这次我使用的是存储库服务模式,但不确定这是否是问题的原因。 图像本身移动到正确的文件夹中,但数据库中的路径为:

C:\xampp\tmp\php596F.tmp
我已经在谷歌上搜索/查看了关于stackoverflow的其他建议,但没有一个有效

更新
愚蠢的我,我应该从模型的可填充项中删除图像,这甚至不会节省大部分时间。

原因:问题是在上传图片时,您的请求数据没有更改。因此,
image
仍然包含tmpdata


如何修复:确保在
表单
上添加了
多部分/表单数据
。在控制器中进行验证,以确保上载的文件是图像,如下所示:

public function update(Request $request, $id)
   {

     $validatedData = $request->validate([
        'image' => 'required|image|mimes:jpeg,jpg,png,gif',
       ]);

       if ($request->hasFile('image')) {
           $image = $request->file('image');
           $filename = time() . '.' . $image->getClientOriginalExtension();
           $path = 'storage/images/' . $filename;
           Image::make($image->getRealPath())->resize(300, 300)->save($path);
           $request->replace(['image' => $path]);
       }

       //$request['image'] = $filename;
       

       $this->productservice->update($request, $id);

       return redirect()->back()->with('status', 'Product has been updated succesfully');
   }

我真傻,我应该从模型的可填充项中删除图像,这甚至不能节省大部分时间。

不幸的是,结果是一样的。不要使用getRealPaththo@sta多糟糕的建议啊?.我还没做完,在上传之前先验证一下
图像
。$this->productservice->update()需要Lightlight\Http\Request的实例,并且数组已传递,因此无法工作。是否重试?仍存储为tmpGive的
dd($Request->file('image'))的输出?路径名:“C:\xampp\tmp\php4DDE.tmp”