簡體   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