Laravel图像路径存储为.tmp

问题描述

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

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

我以前在Laravel中做到过,从来没有遇到过问题。这次我使用的是Repository-Service模式,尽管不确定这是否是导致问题的原因。 图像本身已移动到正确的文件夹中,但是数据库中的路径为:

C:\xampp\tmp\php596F.tmp

我已经搜索/检查了有关此问题的stackoverflow的其他建议,但没有一个起作用。

更新 愚蠢的我,我应该从模型的可填充对象中删除图像,它甚至在大多数时间都没有节省任何东西。

解决方法

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


如何解决:确保在multipart/form-data上添加了form。在您的控制器中进行验证,以确保上传的文件是图片,如下所示:

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

对不起,我应该从模型的可填充对象中删除图像,这甚至大部分时间都没有节省。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...