为什么我的图像没有存储在Laravel 5.6中的指定文件夹中?

时间:2018-06-30 13:34:05

标签: php laravel file-handling laravel-5.6

在我的表单中,我要求上传图片。然后我已经对其进行了验证,并且可以正常工作。但是该文件未存储在上载文件夹中。

这是我的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是否为目录并存在,并且确实存在。

有人可以帮忙吗?谢谢。

3 个答案:

答案 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());   
    }