在我的表单中,我要求上传图片。然后我已经对其进行了验证,并且可以正常工作。但是该文件未存储在上载文件夹中。
这是我的ProductController的摘要:
public function store(Request $request)
{
// Validate fields
$this->validate($request, [
'product_name' => 'required',
'product_price' => 'required',
'product_desc' => 'required',
'product_img' => 'image|required'
]);
// Upload image
if($request->hasFile('image')) {
app()->make('path.public/uploads');
$image = $request->image;
$image->move('uploads', $image->getClientOriginalName());
}
/*// Save the data into database
Product::create([
'name' => $request->product_name,
'price' => $request->product_price,
'description' => $request->product_desc,
'image' => $request->image->getClientOriginalName()
]);
// Echo a session message
$request->session()->flash('msg', 'Your product has been added');
// Redirect to view page
return redirect('/products');*/
}
我已经尝试寻找其他可能的解决方案,但是其他问题已经在将图像存储在数据库中了。我还尝试检查uploads
是否为目录并存在,并且确实存在。
有人可以帮忙吗?谢谢。
答案 0 :(得分:0)
尝试以下操作:official documentation:这是它在控制器中的外观:
if($request->hasFile('image')) {
$request->file('image')->store('uplodads/', 'public');
}
默认情况下,这会将图像存储在/storage/app/public/uploads
中。您也可以在public
中更改/config/filesystems.php
的路径。然后,您可以使用asset('storage/uploads'.$img_name)
访问文件(如果已链接存储)。
答案 1 :(得分:0)
app()->make('path.public/uploads');
答案 2 :(得分:0)
我已经解决了。变量始终是错误的。我放置的是product_img
,而不是image
。
这是更新的代码:
// Validate fields
$this->validate($request, [
'product_name' => 'required',
'product_price' => 'required',
'product_desc' => 'required',
'product_img' => 'image|required'
]);
// Upload image
if($request->hasFile('product_img')) {
$image = $request->product_img;
$image->move('uploads', $image->getClientOriginalName());
}