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”