繁体   English   中英

在 Laravel 5.8 中上传和存储图像,图像未存储在数据库或文件路径中

[英]Uploading and storing an image in Laravel 5.8 image not storing in database or file path

laravel 相当新我想上传图像并将其存储在数据库和文件路径中。 我遇到的第一个问题是图像没有出现在validateRequest function 的数组中,因此它在数据库中返回为 NULL。 第二个问题是我尝试使用storage:link来存储所有上传的图像,但似乎无法存储图像并且不确定我打算使用什么文件路径。

    public function validateRequest()
    {
        $validated = request()->validate([
            'title' => 'required|string',
            'h1' => 'required|string',
            'page_title' => 'required|string',
            'meta_description' => 'required|string',
            'content' => 'required|string',
            'active' => 'integer'
        ]);

        if (request()->hasFile('image')){
            $validated = request()->validate([
                'image' => 'sometimes|file|image|mimes:jpeg,png,jpg,gif,svg|max:5000'
            ]);
        }

        // Check if active is ticked
        $validated['active'] = isset(request()->active[0]) ? 1 : 0;

        // Create slug from title
        $validated['slug'] = Str::slug(request()['title'], '-');

        return $validated;
    }
    public function storeImage($post)
    {
        if (request()->hasFile('image')) {
            $post->update([
                'image' => request()->image->storeAs('/images/uploads/posts', 'public')
            ]);

        }
    }

我尝试将图像与$validated = request()->validate中的字段的 rest 一起放置,但即使已选择图像,它也会显示“此图像必须是图像”。 非常感谢您的帮助。

第一个问题是验证。 请将此添加到您的form

<form ... enctype="multipart/form-data">

第二个问题就是这样解决。 在你的 controller 像这样调用 function

$productImage = $request->file('your_image_name');

if (is_file($productImage)) {
    $imageUrl = $this->productImageUpload($productImage);
    $product->your_database_field_name = $imageUrl;
}


protected function productImageUpload($productImage)
{
    $imageName = $productImage->getClientOriginalName();
    $directory = 'your_file_path/your_file_path/';
    $imageUrl = $directory . $imageName;
    $productImage->move($directory, $imageName);
    return $imageUrl;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM