如何解决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');
}
,
对不起,我应该从模型的可填充对象中删除图像,这甚至大部分时间都没有节省。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。